Android 如何检查我的EditText是否有TextChangedListener(TextWatcher)?
我知道我们可以使用Android 如何检查我的EditText是否有TextChangedListener(TextWatcher)?,android,listener,textwatcher,textchanged,Android,Listener,Textwatcher,Textchanged,我知道我们可以使用addTextChangedListener将TextWatcher添加到editText中,然后使用removeTextChangedListener将其删除。但是现在我想检查我的EditText是否有TextWatcher 我该怎么做 我有一个网格。它有一个适配器。我的适配器检查定义项的类型是否为EditText向其添加TextWatcher。调用方法getView时,会将TextWatcher添加到该EditText。我希望避免添加额外的TextWatchers。没有专门
addTextChangedListener
将TextWatcher
添加到editText
中,然后使用removeTextChangedListener
将其删除。但是现在我想检查我的EditText
是否有TextWatcher
我该怎么做
我有一个网格。它有一个适配器。我的适配器检查定义项的类型是否为EditText向其添加
TextWatcher
。调用方法getView
时,会将TextWatcher
添加到该EditText
。我希望避免添加额外的TextWatchers
。没有专门用于此操作的API。为什么不自己维护一个布尔变量,比如textWatch
每次设置观察者时,将其设置为true,并在移除观察者时将其设置为false
您只需检查此变量即可查看editText是否有监视程序
如果需要检查多个editText框,则可以使用布尔数组。还有一个解决方法,您可以使用视图的
setTag
方法在getview方法中为editText设置标记,然后检查getTag是否为null,如果您已经设置了TextWatcher
如果(editText对象getTag为null,则editText.seTtag和add watcher)
else return您可以创建一个
映射
来存储所有具有TextWatcher
的EditText
对象
比如说
Map<EditText, Boolean> textWatcherMap = new HashMap<>();
然后,在处理EditText
时,请检查HashMap
以获取参考
if(textWatcherMap.get(editText) != null)
useCurrentTextWatcher();
else
{
addNewTextWatcher();
textWatcherMap.put(editText, true);
}
你可以打电话
edittext.removeTextChangedListener(YourWatcherObject)
每次添加一个新的观察者,使其不能有多个观察者之前
edittext.addTextChangedListener(YourWatcherObject)
这样做的目的是什么。可能有一种更直接的方法来完成您要做的事情。@mrres1我更新了我的问题如果您在适配器中正确使用
convertView
,您可以很容易地确保每个EditText只添加一个TextWatcher。(if(convertView==null)/*膨胀视图并添加TextWatcher*/
)@mrres1我知道。所以编辑文本存在。在你的代码行之后,我添加了我的TextWatcher。因此,每当网格刷新时,就会有额外的文本观察者。
edittext.addTextChangedListener(YourWatcherObject)