/ / Entfernen Sie alle TextWatchers von einem EditText - Android, Android-Edittext, Textwatcher

Entfernen Sie alle TextWatchers von einem EditText - Android, Android-Edittext, Textwatcher

Ich versuche, einige TextWatchers auf einem EditText hinzuzufügen, aber ich sollte alle entfernen, wenn ich es brauche.

...

@BindView(R.id.widget_search_edittext)
MaterialEditText mEditText;

private List<TextWatcher> textWatcherList;

...

public void addTextChangedListener(TextWatcher watcher) {
textWatcherList.add(watcher);
mEditText.addTextChangedListener(watcher);
}

public void removeAllTextChangedListeners() {
for (TextWatcher watcher : textWatcherList) {
mEditText.removeTextChangedListener(watcher);
}
textWatcherList.clear();
}

aber das hat nicht funktioniert, irgendwelche ideias?

Antworten:

1 für die Antwort № 1

Stellen Sie sicher, dass Sie überschreiben equals() in der erweiterten TextWather-Klasse. Weil der Watcher, der in ArrayList gespeichert ist, durch Aufruf entfernt wurde arraylist.indexOf(watcher) das hängt von der Gleichheitsfunktion ab.

public void addTextChangedListener(TextWatcher watcher) {
if (mListeners == null) {
mListeners = new ArrayList<TextWatcher>();
}
mListeners.add(watcher);
}
/**
* Removes the specified TextWatcher from the list of those whose
* methods are called
* whenever this TextView"s text changes.
*/
public void removeTextChangedListener(TextWatcher watcher) {
if (mListeners != null) {
int i = mListeners.indexOf(watcher);
if (i >= 0) {
mListeners.remove(i);
}
}
}

schau, wie textView Watcher intern entfernt