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 替换的新子串的长度*/@Overridepublic 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 替换的新子串的长度*/@Overridepublic 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*/@Overridepublic 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
浙公网安备 33010602011771号