我做了一个查询单词的简单app, 当在EditText中输入单词的时候,点击lookup,则在TextView区域显示出该单词的意思,当EditText中没有任何字符时,显示"word definition result", 注意,单词的最大长度限制是20个字符,且禁止回车键(换行键);

这个里面需要用到读文件操作、禁止键盘回车键、Textwatcher监听、限制输入长度、提示语等操作!

1.   首先需要一个Lookup的button, 一个可以输入字符的EditText 和一个显示单词结果的TextView;

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.chenye.dictionary.MainActivity"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/wordEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="input a word"
android:maxLength="20"
android:singleLine="true"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="lookup"
android:onClick="lookup"/> </LinearLayout> <TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="word definition result"
android:textSize="20dp"/> </LinearLayout>

其中android:singleLine="true"为禁止虚拟键盘的操作; android:maxLength="20"为限制最大长度;android:hint="input a word"为提示语;这里EditText和button部分是水平布局,而它俩与TextView显示结果区域是垂直布局;

2.  java代码;

package com.chenye.dictionary;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; import java.util.HashMap;
import java.util.Scanner; public class MainActivity extends AppCompatActivity {
private HashMap<String, String> dictionary;
EditText wordEditText;
TextView resultTextView; public void readAllDefinition() {
Scanner scanner = new Scanner(getResources().openRawResource(R.raw.gre_words));
if(this.dictionary == null){
this.dictionary = new HashMap<>();
}
while (scanner.hasNext()){
String line = scanner.nextLine();
String[] pieces = line.split("\t");
this.dictionary.put(pieces[0], pieces[1]); }
scanner.close();
}
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
readAllDefinition();
wordEditText = findViewById(R.id.wordEditText);
resultTextView = findViewById(R.id.result);
wordEditText.addTextChangedListener(new TextWatcher() {
private CharSequence word; @Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
word = charSequence; } @Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
//resultTextView.setText("");
} @Override
public void afterTextChanged(Editable editable) {
if(word.length()==0) {
resultTextView.setText("word definition result");
}
else if (word.length() == 20){
Toast.makeText(MainActivity.this, "已到达输入的最大长度!", Toast.LENGTH_SHORT).show();
}
}
}); }
// button的方法
public void lookup(View view) {
EditText wordText = findViewById(R.id.wordEditText);
String word = wordText.getText().toString();
if(this.dictionary == null){
readAllDefinition();
}
String def = this.dictionary.get(word);
TextView defTextView = findViewById(R.id.result);
if(def == null){
defTextView.setText("word not fond!");
}else{
defTextView.setText(def);
}
} }
readAllDefinition()是在app启动的时候就会被调用的方法,此时已经将所有的单词,以及其对应的含义放在了map中;
其中,getResources().openRawResource(R.raw.gre_words)方法获取到InputStream流, gre_words是存放单词及对应含义的文本文件;
onCreate()方法中,分别采用wordEditText = findViewById(R.id.wordEditText);resultTextView = findViewById(R.id.result)方法获取id
最重要的是addTextChangedListener这个方法,是监听EditText的方法,里面有三个方法:
beforeTextChange()是在EditText改变之前里面可以做一些操作;
onTextChanged()是改变中;

afterTextChanged()是改变后;
参数:charSequence是这串字符串;start表示开始变化的位置,count表示变化的字符串长度,after表示变化之后该位置的字符数量, before表示变化之前该位置的字符数量;
3. 结果如下:
初始情况: 查询单词如下: 删除单词中间结果如下:

长度超出情况如下:

ps: 本宝也是刚开始学习android, 记录一下自己的学习过程,好记性不如烂笔头!

												

Android TextWatcher的使用方法(监听ExitText的方法)的更多相关文章

  1. Oracle Net Manager 的使用方法(监听的配置方法)

    一,在服务端配置oracle端口 win+R  输入netca 弹出如下窗口后 选择监听程序配置,点击下一步 二.配置端口后使用Telnet工具调试端口是否联通 在命令行输入telnet 服务器ip ...

  2. android -- 小问题 关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题

    关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题: 原因: 首先OnScrollListener是焦点滚动 ...

  3. 关于scrollview监听的一些方法

    一 package cn.testscrollview; import android.os.Bundle; import android.view.MotionEvent; import andro ...

  4. android BroadcastReceiver ACTION_TIME_TICK 系统时间监听不到

    android BroadcastReceiver ACTION_TIME_TICK 系统时间监听不到 今天做android上的消息推送,启动了一个独立service,然后在里面监听系统的ACTION ...

  5. javascript 原生方法监听DOM结构改变事件

    js原生方法监听DOM结构改变事件 document.addEventListener('DOMNodeInserted',function(){alert(1)},false);document.a ...

  6. android的Home键的监听封装工具类(一)

    android的Home键的监听封装: package com.gzcivil.utils; import android.content.BroadcastReceiver; import andr ...

  7. v-on可以监听多个方法吗?

    原文地址 v-on可以监听多个方法 <template> <div class="about"> <button @click="mycli ...

  8. 【Android】添加菜单和监听菜单方法详解

    添加菜单 可以在onCreateOptionsMenu或者onPrepareOptionsMenu方法中来添加菜单 代码添加: menu.add((int groupId, int itemId, i ...

  9. Android 另类方法监听软键盘的弹出收起事件

    http://www.cnblogs.com/csonezp/p/5065624.html 最近做的项目碰到个问题,a界面是fragment+recyclerview,b界面带个edittext,并且 ...

随机推荐

  1. centos7 源码编译nginx

    使用configure命令配置编译.它定义了系统的各个方面,包括允许使用 nginx 进行连接处理的方法.最后它创建一个Makefile.该configure命令支持以下参数: --prefix=pa ...

  2. ajax请求成功后js刷新当前页,当前页是post查询结果(用post请求进行搜索筛选)的问题

    下面的一个ajax操作,原先操作成功会刷新当前页,保证用户看到的数据是最新的,一般情况不会出现问题.$.ajax({ url: url + "/addTeacherAuth", / ...

  3. mysqlbench使用

    看见不少人问mysqlbench怎么用,这个好像没什么困难的,基本看的懂英文就可以使用了,感觉像使用word一样. 下载地址http://www.mysql.com/products/workbenc ...

  4. Bootstrap 附加导航(Affix)插件

    bootstrap 附加导航(Affix)插件允许某个div元素固定到页面中的某个位置.您可以打开或关闭使用该插件之间进行切换 后续再写

  5. mysql 获取系统时间的下一天 年-月-日 时:分:秒

    DAY) as date

  6. JT∕T 905 -2014 出租汽车服务管理信息系统的相关协议研究

    出租汽车服务管理信息系统(JT∕T 905 -2014) 国家的相关技术要求2014年7月正式出台,总体有四部分,   第 1 部分:总体技术要求:   第 2 部分:运营专用设备:   第 3 部分 ...

  7. 20180909 解析JS Cookie的设置,获取和检索

    引用: JavaScript Cookie - by runoob.com Cookie是储存在电脑文本文件中的数据,用于保存访问者的信息,并可以在下次打开页面时引用. 页面在设置/引用访问者信息时, ...

  8. windows下简单使用pip

    1. 在python官网上下载python时会自带pip,并且在安装Python时若未取消会默认一并安装 2. 找出pip.exe所在位置, 3. 右击此电脑,点击属性 4. 高级系统设置 5. 点击 ...

  9. 绘制弧形:imagearc() 说明:三点钟的位置是起点(0度

    <?php //1. 绘制图像资源(创建一个画布) $image = imagecreatetruecolor(500, 300); //2. 先分配一个绿色 $green = imagecol ...

  10. ubuntu 压缩 解压 命令大全

    ubuntu下文件压缩/解压缩命令总结 http://blog.csdn.net/luo86106/article/details/6946255 .gz 解压1:gunzip FileName.gz ...