TextWatcher()使用总结

TextWatcher()使用总结
  1. EditText et1 = (EditText) findViewById(R.id.et_test1);
  2. et1.addTextChangedListener(new TextWatcher() {
  3. /** 使用:
  4. * 一,只是响应文本变化,使用afterTextChanged()或onTextChanged()
  5. * 二,除了改变前后的s, beforeTextChanged*()与onTextChanged()方法参数一致*/
  6. /**
  7. * 准备改变 准备用after长度的新子串替换掉起始位置为start、长度为count的旧子串
  8. * @param s 改变前的整个CharSequence
  9. * @param start 被改变的字符的位置 从0计算 eg:0/1/2...
  10. * @param count 将被替换掉的旧子串的长度
  11. * @param after 替换的新子串的长度
  12. */
  13. @Override
  14. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  15. Log.e("beforeTextChanged", "s-" + s.toString() + "," + "start-" + start + "count-" + count + "after-" + after);
  16. }
  17. /**
  18. * 改变后 在CharSequence中,位置start处、长度为count的子串替换掉了长度为before的旧子串
  19. * @param s 改变后的整个CharSequence
  20. * @param start 被改变的字符的位置
  21. * @param before 被替换掉的旧子串的长度
  22. * @param count 替换的新子串的长度
  23. */
  24. @Override
  25. public void onTextChanged(CharSequence s, int start, int before, int count) {
  26. Log.e("onTextChanged", "s-" + s.toString() + "," + "start-" + start + "count-" + count + "before-" + before);
  27. }
  28. /**
  29. * 改变后 注意在该方法里可以做改变text的事情,但要避免出现永真循环
  30. * @param s 改变后的整个CharSequence
  31. */
  32. @Override
  33. public void afterTextChanged(Editable s) {
  34. Log.e("afterTextChanged", s.toString());
  35. }
  36. });

开始“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





posted on 2015-11-27 15:47  陈诚之  阅读(845)  评论(0编辑  收藏  举报

导航