web-dev-qa-db-fra.com

Supprimer un écouteur d'une vue dans android

Existe-t-il un moyen de supprimer un écouteur d'un View dans Android? J'ai un Checkbox auquel j'ai attaché un CheckChangedListener. Le problème est qu'en appelant setChecked() dessus, mon auditeur se déclenche.

Si je ne peux pas simplement supprimer un écouteur, y a-t-il un moyen d'empêcher l'écouteur de se déclencher lorsque j'appelle setChecked() manuellement par opposition à sa vérification à partir d'un événement tactile?

30
Falmarri

Eh bien, j'ai trouvé la réponse. Cela ne semble être documenté nulle part, mais j'ai parcouru le code de la classe View et si vous passez null aux méthodes setClickListener, il supprimera l'écouteur.

checkbox.setOnCheckChangedListener(null);

Cela devrait fonctionner pour tout écouteur d'événements.

60
Falmarri

Pourquoi avez-vous un checkChangeListener? Si vous utilisiez un onClicklListener cela pourrait bien fonctionner pour vous?

6
Nanne

Vous pouvez essayer de définir l'écouteur sur celui qui ne fait rien avant d'appeler setChecked() puis de remettre l'utile par la suite.

2
Null Set

J'ai rencontré des problèmes similaires avec la vue Spinner. Ma solution était de créer une variable membre de classe que j'archivais dans la méthode OnItemSelected. Avant de modifier le contenu/la sélection du Spinner par programme, j'ai défini cette variable sur true. Lorsque OnItemSelected se déclenche, si la variable est true je la change en false et juste return sans faire aucun travail. L'inconvénient est que cela rend le dépannage difficile car cette variable est définie tout au long de mon code.

0
Mike Lowery