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)