2

我知道我们可以添加一个TextWatcherusingEditTextsaddTextChangedListener删除它 using removeTextChangedListener。但现在我想检查我的EditText是否有TextWatcher

我怎样才能做到这一点?

我有一个网格。它有一个适配器。我的适配器检查已定义项目的类型是否为 EditText 添加一个TextWatchergetView调用方法时TextWatcher将添加到该EditText. 如果添加了一个,我想避免添加额外TextWatchers的内容。

4

4 回答 4

4

好吧,有解决方法,您可以使用setTagView 方法在 getview 方法中将标签设置为您的 edittext,在执行此操作之前检查 getTag 是否不为空,如果您已经设置TextWatcher...

if(editText object getTag is null then editText.setTtag and add watcher) else return

于 2013-01-02T07:03:33.757 回答
1

没有专门执行此操作的 API。为什么不维护一个布尔变量,说textWatch你自己?

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

您可以简单地检查此变量以查看 editText 是否有观察者。

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

于 2013-01-02T05:27:27.347 回答
1

您可以创建一个Map来存储所有具有的EditText对象TextWatcher

例如

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);
}
于 2013-01-04T03:35:15.697 回答
1

你可以打电话

edittext.removeTextChangedListener(YourWatcherObject)

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

edittext.addTextChangedListener(YourWatcherObject)
于 2021-01-14T14:20:29.123 回答