10.1 问题
应用程序需要持续监控TextView小部件(例如EditText)中文文本内容的变动情况。
10.2 解决方案
(API Level 2)
实现android.text.TextWatcher接口。textWatcher提供了3个文本更新过程中的回调方法:
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
public void onTextChanged(CharSequence s, int start, int before, int count) { }
public void afterTextChanged(Editable s);
beforeTextChanged()和onTextChanged()方法主要用于提供提示功能,因为这两个方法实际上都无法修改CharSequence。如果要截获视图中输入的文本,当afterTextChanged()方法被调用时文本就有可能发生了变化。
10.3 实现机制
调用TextView.addTextChangedListener()方法将TextWatcher注册到TextView。注意,根据语法,可以将多个TextWatcher注册到一个TextView。
1. 字符计数器示例
TextWatcher的一个简单应用是创建EditText的字符计数器,能随着用户的输入和删除操作实时显示其中的字数。以下代码清单中的示例Activity就实现了这样一个TextWatcher,注册了一个EditText小部件并在Activity的标题上显示字符数。