Comment faire pour désactiver onItemSelectedListener être invoquée lors du réglage de l'élément sélectionné par le code

Demandais juste la façon dont vous gérer le problème suivant: un résultat est calculé en fonction de deux roulettes' éléments sélectionnés. Pour gérer l'INTERFACE utilisateur de choses, c'est à dire un utilisateur sélectionne un élément dans l'une des filateurs, j'ai installer un écouteur à l'aide de setOnItemSelectedListener pour le spinner dans mon onCreate() méthode de l'activité.

Maintenant: qui fonctionne, bien sûr, très bien. L'auditeur du travail est de déclencher un nouveau calcul du résultat.

Le problème: parce que je l'intercepter onPause() onResume() pour sauvegarder/restaurer le dernier état, j'ai une méthode qui jeux de ces deux toupies élément sélectionné par programme comme ici:

startSpinner.setSelection(pStart);
destSpinner.setSelection(pDest);

Ces deux appels appeler les auditeurs, trop! Ma méthode de calcul pour le résultat, en plus de la notification d'un nouveau jeu de résultats est appelée deux fois ici!

Un stupide direct pour cette approche serait d'avoir une variable booléenne désactivation ce que l'auditeur n'a à l'intérieur, le mettre en avant de régler les éléments sélectionnés et de le rétablir par la suite.
Ok. Mais est-il une meilleure méthode??

Je ne veux pas que les auditeurs à être appelée par le code - actions, que par les actions de l'utilisateur! 🙁

Comment voulez-vous faire?
Merci!

  • Vous pouvez utiliser setSelection(pStart, false) pour animer param. Mais ça ne marche pas tout le temps.
InformationsquelleAutor Zordid | 2010-02-19