Подтвердить что ты не робот

Удалить слушателя из вида в андроиде

Есть ли способ удалить слушателя из представления в Android? У меня есть флажок, который я привязал checkchangedlistener. Проблема в том, что вызов setChecked() на этом приводит к срабатыванию моего слушателя.

Если я не могу просто удалить прослушиватель, есть ли способ предотвратить прослушивание слушателя, когда я вызываю setChecked() вручную или проверяя его из события касания?

4b9b3361

Ответ 1

Ну, я нашел ответ. Это, как представляется, не документировано нигде, но я прошел код для класса View, и если вы передадите null методам setClickListener, он удалит слушателя.

checkbox.setOnCheckChangedListener(null);

Это должно работать для любого прослушивателя событий.

Ответ 2

Почему у вас есть checkChangeListener? Если вы используете onClicklListener, это может сработать для вас?

Ответ 3

Вы можете попробовать настроить прослушиватель на тот, который ничего не делает, прежде чем называть setChecked(), а затем снова добавить полезный.

Ответ 4

У меня были подобные проблемы с представлением Spinner. Мое решение состояло в том, чтобы создать переменную-член класса, в которой я проверяю метод OnItemSelected. Прежде чем я программно изменяю содержимое/выбор Spinner, я устанавливаю эту переменную в true. Когда OnItemSelected срабатывает, если переменная true, я меняю ее на false и просто return без какой-либо работы. Недостатком этого является то, что он затрудняет устранение неполадок, так как эта переменная устанавливается на всем протяжении моего кода.

Ответ 5

Вы просто используете removeListener (это). Я что-то пропустил?