有时我们需要对EditText输入时设置监听,比如对EditText进行格式控制(一般用正则表达式),判断输入的内容是否合法。笔者学习android一般先查看官方文档,在学习本知识点的时候看了一些其他人写的博客,但是看了几篇博文仍旧一些参数含义的不是很理解,本文笔者就从官方文档开始讲起,我们先看官方文档怎么介绍TextWatcher(接口)三个抽象方法。
当在EditText进行文本输入时,调用下面三个方法,不同的方法得到的方法有所不同,我们看看它们能为我们提供什么样的数据吧!可以利用给我传过来的数据做我们许多想做的事情。
先翻译翻译每个方法的含义,如果有什么翻译的不好的地方欢迎批评指正:
- afterTextChanged(Editable s):
含义:“这个方法被调用就是为了通知你在 在s的某个地方的文本内容被改变了!” - beforeTextChanged(CharSequence s, int start, int count, int after):
含义: “表示有count个字符从start位置开始**被**after长度新的文本所替换。” - onTextChanged(CharSequence s, int start, int before, int count):
含义: “表示有count个字符从start位置开始已经完成对before长度的旧的文本的替换。”
大家细细品味后面两个方法的不同吧!
package com.example.edittextaddtextchangelistener;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText mEditText;
private TextWatcher mWatcher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = (EditText) findViewById(R.id.content);
mWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e("onTextChanged----->", "有"+count+"个字符仅仅从"+start+"开始要替换"+before+"个旧的字符");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
Log.e("beforeTextChanged----->", "有"+count+"个字符从"+start+" 位置开始 已经被"+ after+"个字符所替换");
}
@Override
public void afterTextChanged(Editable s) {
Log.e("afterTextChanged----->", "最终内容:" + s.toString());
}
};
mEditText.addTextChangedListener(mWatcher);
}
}
我们依次输入“ abc” 之后 再依次删除 “cba”看看有什么输出效果吧!
输入“abc”结果图:
依次删除“cba”结果图:
不知大家能否理解,希望大家通过这篇博文能够认识TextWatcher这个接口。
有什么错误欢迎联系笔者批评指正!