2009-10-12 9 views
1

QUESTION VIEUX (déjà répondu par Mark - La réponse est d'utiliser getTag()):Android: gestionnaires d'événements pour une vue personnalisée? (RÉVISÉE QUESTION)

Disons que j'ai un ListView avec une mise en page personnalisée pour chaque ligne ayant un ImageView et un TextView. Maintenant, quand un clic est fait, je suis capable de déterminer quelle image et quelle vue de texte ont été cliquées basées sur la vue mais si je dois passer cette information pour dire une autre activité, j'ai besoin de la position. Mais, comment pourrais-je obtenir la position de l'article cliqué dans la liste?

QUESTION RÉVISÉE:

que je fais ce qui suit: ListView personnalisée avec un ImageView et un TextView. Je voudrais effectuer différentes actions selon que l'on clique sur une image ou un élément de texte. Maintenant, il y a deux approches que je peux prendre pour effectuer la gestion des événements:

Approche # 1: Attacher un OnItemClick Listener à un élément dans ListView et effectuer une action appropriée. Problème: Il reste à savoir quel élément (image ou texte) a été cliqué. Comment puis-je déterminer cette information et prendre les mesures nécessaires? Approche n ° 2: Attacher un écouteur OnClick à l'image et au texte séparément dans chaque élément de listview puis effectuer une action appropriée. Problème: Je suis très sceptique quant à la performance de cette approche. Ajouté à cela, lorsqu'un clic est effectué, la ligne de l'élément n'est pas en surbrillance ce qui le rend fortement non intuitif. Comment est-ce que je ferais la mise en évidence de la rangée dans ce cas?

Des suggestions?

+0

Avez-vous juste besoin de cliqueter la rangée ou d'éléments à l'intérieur de chaque rangée? –

+0

Je suis en train de rechercher des éléments à l'intérieur de la rangée ... Mais j'accepte d'attacher des gestionnaires d'événements aux éléments d'une rangée (ce qui semble très encombrant) ou d'attacher un gestionnaire d'événement à la ligne puis de déterminer quelle vue a été cliquée ... (qui semble être une meilleure façon de faire les choses) ... – Legend

+0

@Legend avez-vous eu une réponse à cela? Je suis coincé au même problème. Qu'avez-vous fait pour déterminer quelle vue (imageview ou textview a été cliquée)? En outre, je suis très nouveau pour Android, je sais comment attribuer des événements onClick à des vues individuellement, Cependant, comment le faire pour chaque vue d'affilée? L'intention Eack que je génère doit être différente, en fonction de la vue sur laquelle elle a été cliquée et de la ligne dans laquelle elle se trouvait. – harshit

Répondre

4

Attachez la position à la ligne (ou à l'un de ses widgets) via setTag() et récupérez-la si nécessaire via getTag().

+0

Merci beaucoup ... Est-ce que cela signifie que je peux définir l'étiquette sur l'objet (qui contient information) elle-même? Dans ce cas, je n'ai pas vraiment à me soucier d'obtenir les attributs de l'item en utilisant une variable de position ... Des suggestions? – Legend

+0

En outre, si tout cela semble compliqué, y a-t-il un moyen de savoir quelle vue a été cliquée et de prendre une action spécifique? – Legend

+0

w/r/t le premier commentaire, je ne peux pas répondre à cela dans l'abstrait. w/r/t le deuxième commentaire, votre OnClickListener vous indique ce que View a été cliqué dans la méthode onClick(). – CommonsWare

Questions connexes