如何检查我的EditText是否有TextChangedListener(TextWatcher)?

时间:2013-01-02 05:22:26

标签: android listener textwatcher textchanged

我知道我们可以使用TextWatcherEditTexts添加addTextChangedListener并使用removeTextChangedListener将其删除。但现在我想检查我的EditText是否有TextWatcher

我该怎么做?

我有一个网格。它有一个适配器。我的适配器检查定义项的类型是否为EditText,向其添加TextWatcher。当方法getView被调用时,TextWatcher被添加到EditText。如果添加了TextWatchers,我想避免添加额外的{{1}}。

4 个答案:

答案 0 :(得分:4)

那么有一些解决办法,您可以使用View的setTag方法在getview方法中为您的edittext设置标记,然后在执行此检查之前,如果getTag不为null,那么您已经设置了TextWatcher。 ..

if(editText对象getTag为null然后是editText.seTtag并添加观察者) 否则返回

答案 1 :(得分:1)

您可以创建Map来存储所有EditTextTextWatcher个对象

例如

Map<EditText, Boolean> textWatcherMap = new HashMap<>();

TextWatcher添加到EditText时,请添加对HashMap的引用。

TextWatcher textWatcher = new TextWatcher(..);
EditText editText = (EditText) findViewById(R.id.editTextId);
editText.addTextChangedListener(textWatcher);
textWatcherMap.put(editText, true);

然后,当您使用EditText时,请检查HashMap以获取参考

if(textWatcherMap.get(editText) != null)
    useCurrentTextWatcher();
else 
{
    addNewTextWatcher();
    textWatcherMap.put(editText, true);
}

答案 2 :(得分:0)

没有API专门执行此操作。为什么不保持一个布尔变量,自己说textWatch

每次设置观察者时,将其设置为true,并在删除观察者时将其设置为false。

您只需检查此变量即可查看editText是否有观察者。

如果您有多个需要检查的editText框,则可以使用布尔数组。

答案 3 :(得分:0)

你可以打电话

edittext.removeTextChangedListener(YourWatcherObject)

每次添加一个新的观察者之前,它不能有多个观察者

edittext.addTextChangedListener(YourWatcherObject)