在网上找了一圈,关于这个方法的参数,看好几遍看不懂,原本以为是我理解的有问题,后来自己动手实践了才发现,那些文章是真的垃圾。
我把我动手实践的结论发一下:
((EditText) findViewById(R.id.et_edit)).addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e("MainActivity", "CharSequence:" + s + " start:" + start + " before:" + before + " count:" + count);
}
@Override
public void afterTextChanged(Editable s) {
}
});
打印结果
参数介绍:
-
CharSequence: 就是你输入到EditText上的字符串,和afterTextChanged的那个参数效果一样
-
start:你修改的字符的下标,你也可以理解成index。 比如Edittext上已经有了“1”,我再输入一个字符“2”,这时在索引为1的地方增加了一个字符,所以start就是1。删除字符道理也是一样,哪个位置index发生了改变,start就是几。
-
before:跟删除相关。当你删除一个字符,before为1,count为0。别理解错了,由于你删除也好增加也好,每次都是变动一个字符,所以这个before总是1。count也是一样。
-
count:跟增加相关。当你增加一个字符时,count为1,before为0
看完参数介绍,再回过头看那个插图,相信你会清楚。
网友评论