Удалить слушателя из вида в андроиде
Есть ли способ удалить слушателя из представления в Android? У меня есть флажок, который я привязал checkchangedlistener. Проблема в том, что вызов setChecked()
на этом приводит к срабатыванию моего слушателя.
Если я не могу просто удалить прослушиватель, есть ли способ предотвратить прослушивание слушателя, когда я вызываю setChecked()
вручную или проверяя его из события касания?
Ответы
Ответ 1
Ну, я нашел ответ. Это, как представляется, не документировано нигде, но я прошел код для класса View
, и если вы передадите null методам setClickListener, он удалит слушателя.
checkbox.setOnCheckChangedListener(null);
Это должно работать для любого прослушивателя событий.
Ответ 2
Почему у вас есть checkChangeListener
? Если вы используете onClicklListener
, это может сработать для вас?
Ответ 3
Вы можете попробовать настроить прослушиватель на тот, который ничего не делает, прежде чем называть setChecked()
, а затем снова добавить полезный.
Ответ 4
У меня были подобные проблемы с представлением Spinner. Мое решение состояло в том, чтобы создать переменную-член класса, в которой я проверяю метод OnItemSelected
. Прежде чем я программно изменяю содержимое/выбор Spinner, я устанавливаю эту переменную в true
. Когда OnItemSelected
срабатывает, если переменная true
, я меняю ее на false
и просто return
без какой-либо работы. Недостатком этого является то, что он затрудняет устранение неполадок, так как эта переменная устанавливается на всем протяжении моего кода.
Ответ 5
Вы просто используете removeListener (это). Я что-то пропустил?