参考:【Android】关于addTextChangedListener()方法的上机记录
addTextChangedListener的监听:
mEtTest.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//这个方法被调用,说明在s字符串中,
//从start位置开始的count个字符即将被长度为after的新文本所取代。
//在这个方法里面改变s,会报错。
Log.e("111", "1=====================================================");
Log.e("111", "1==beforeTextChanged , s==" + s.toString());
Log.e("111", "1==beforeTextChanged ,start==" + start);
Log.e("111", "1==beforeTextChanged ,count==" + count);
Log.e("111", "1==beforeTextChanged ,after==" + after);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//这个方法被调用,说明在s字符串中,
//从start位置开始的count个字符刚刚取代了长度为before的旧文本。
//在这个方法里面改变s,会报错。
Log.e("111", "2==onTextChanged ,s==" + s.toString());
Log.e("111", "2==onTextChanged ,start==" + start);
Log.e("111", "2==onTextChanged ,count==" + count);
Log.e("111", "2==onTextChanged ,before==" + before);
}
@Override
public void afterTextChanged(Editable s) {
//这个方法被调用,那么说明s字符串的某个地方已经被改变。
Log.e("111", "3==afterTextChanged ,s==" + s.toString());
}
});
示例一:
//在输入“你”,你
1=====================================================
1==beforeTextChanged , s==
1==beforeTextChanged ,start==0
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1
2==onTextChanged ,s==你
2==onTextChanged ,start==0
2==onTextChanged ,count==1
2==onTextChanged ,before==0
3==afterTextChanged ,s==你
//继续输入“们”,你们
1=====================================================
1==beforeTextChanged , s==你
1==beforeTextChanged ,start==1
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1
2==onTextChanged ,s==你们
2==onTextChanged ,start==1
2==onTextChanged ,count==1
2==onTextChanged ,before==0
3==afterTextChanged ,s==你们
//继续输入“好”,你们好
1=====================================================
1==beforeTextChanged , s==你们
1==beforeTextChanged ,start==2
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1
2==onTextChanged ,s==你们好
2==onTextChanged ,start==2
2==onTextChanged ,count==1
2==onTextChanged ,before==0
3==afterTextChanged ,s==你们好
示例二:
//输入“你”
1=====================================================
1==beforeTextChanged , s==
1==beforeTextChanged ,start==0
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1
2==onTextChanged ,s==你
2==onTextChanged ,start==0
2==onTextChanged ,count==1
2==onTextChanged ,before==0
3==afterTextChanged ,s==你
//继续输入“们”
1=====================================================
1==beforeTextChanged , s==你
1==beforeTextChanged ,start==1
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1
2==onTextChanged ,s==你们
2==onTextChanged ,start==1
2==onTextChanged ,count==1
2==onTextChanged ,before==0
3==afterTextChanged ,s==你们
//把光标移到你和们之间,再次输入“好”
1=====================================================
1==beforeTextChanged , s==你们
1==beforeTextChanged ,start==1
1==beforeTextChanged ,count==0
1==beforeTextChanged ,after==1
2==onTextChanged ,s==你好们
2==onTextChanged ,start==1
2==onTextChanged ,count==1
2==onTextChanged ,before==0
3==afterTextChanged ,s==你好们