2010-01-11 8 views
4

Pourquoi un OnClickListener pour une vue à l'intérieur d'un ListView ne répond pas à un trackball, cliquez sur la vue, alors qu'un OnItemClickListener pour le ListView répond à un clic sur une des vues de ListView?Android ListView OnItemClickListner Vs. Voir OnClickListener

+0

Quel est votre cas d'utilisation pour un écouteur d'événement de clic ListView en dehors des éléments de la liste? –

+2

Je pense que j'ai eu le problème - tant que je n'ai qu'un OnItemClickListener, sans OnClickListener pour chaque vue, que les réponses OnItemClickListener aux événements tactiles et trackball. Merci. – WhiteTigerK

+1

En théorie, si vous vouliez «séparer» la logique, vous pourriez également utiliser OnItemClickListener pour appeler OnClickListener. De cette façon, vous pouvez garder la logique "item click" dans une méthode et le "clic général" dans l'autre. Ce n'est pas parfait, mais ce serait essentiellement comme remplacer la méthode et utiliser un super appel. P.S.-Certainement pas regardé la date sur cette chose quand j'ai posté. Pardon! –

Répondre

0

C'est par conception.

Le composant ListView est spécialement conçu pour déclencher ces événements de cette manière. Je crois qu'ils sont en fait définis dans la classe abstraite AdapterView. D'autres descendants (Gallery, Spinner, etc.) auront également le même comportement. Il existe également un ONItemLongClick.

View.OnClick est uniquement utilisé par des contrôles avec une sémantique simple, par ex. Button où il n'y a qu'un seul "type" de clic.