TextWatcher()使用总结
TextWatcher()使用总结
EditText et1 = (EditText) findViewById(R.id.et_test1);
et1.addTextChangedListener(new TextWatcher() {
/** 使用:
* 一,只是响应文本变化,使用afterTextChanged()或onTextChanged()
* 二,除了改变前后的s, beforeTextChanged*()与onTextChanged()方法参数一致*/
/**
* 准备改变 准备用after长度的新子串替换掉起始位置为start、长度为count的旧子串
* @param s 改变前的整个CharSequence
* @param start 被改变的字符的位置 从0计算 eg:0/1/2...
* @param count 将被替换掉的旧子串的长度
* @param after 替换的新子串的长度
*/
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.e("beforeTextChanged", "s-" + s.toString() + "," + "start-" + start + "count-" + count + "after-" + after);
}
/**
* 改变后 在CharSequence中,位置start处、长度为count的子串替换掉了长度为before的旧子串
* @param s 改变后的整个CharSequence
* @param start 被改变的字符的位置
* @param before 被替换掉的旧子串的长度
* @param count 替换的新子串的长度
*/
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e("onTextChanged", "s-" + s.toString() + "," + "start-" + start + "count-" + count + "before-" + before);
}
/**
* 改变后 注意在该方法里可以做改变text的事情,但要避免出现永真循环
* @param s 改变后的整个CharSequence
*/
@Override
public void afterTextChanged(Editable s) {
Log.e("afterTextChanged", s.toString());
}
});
开始“ha”, 删除“a”
E/beforeTextChanged: s-ha,start-1,count-1,after-0
E/onTextChanged: s-h,start-1,count-0,before-1
E/afterTextChanged: h
开始“h”, 增加“a”
E/beforeTextChanged: s-h,start-1,count-0,after-1
E/onTextChanged: s-ha,start-1,count-1,before-0
E/afterTextChanged: ha