2010-11-19 27 views
5

J'ai navigué sur Internet en cherchant une réponse pendant plusieurs heures, mais je n'arrive pas à trouver quelqu'un qui a été capable de résoudre ce problème.Android ListView avec des éléments cliquables dans ses rangs provoque des problèmes continue de défilement

J'ai un listview qui utilise un adaptateur personnalisé. Une ligne ressemble à ceci

alt text

La liste est remplie par un tableau. Tout fonctionne bien. Maintenant, je veux que ImageView et ToggleButton réagissent aux clics, donc j'implémente l'OnClickListener dans mon adaptateur, place la position des éléments dans la balise de chaque vue, et ensuite je mets leur onclicklistener à ça.

Fonctionne bien, sauf que maintenant je ne peux pas utiliser onListItemClick pour démarrer une activité pour l'élément! OK, je dis, je fais juste le relativelayout en tenant le texte au milieu, il utilise le même onclicklistener. Fonctionne très bien. Tout est cliquable, et la vie est belle.

SAUF! Maintenant, quand je fais défiler la liste, je ne peux pas "continuer" le défilement en le relançant. Cela provoque l'arrêt du défilement, et je dois lancer une fois de plus pour le relancer. Il semble que l'onclick-thingy fasse que le fling-motion soit interprété comme un tap ou quelque chose (ça ne déclenche pas la logique dans onClick).

Je sais que c'est possible en allant simplement à la liste de téléphone sur mon HTC Hero, qui a exactement le genre de disposition et de comportement que je veux de mon application. Cette application semble même fonctionner avec onItemClickListener.

Alors, comment puis-je m'assurer que la liste continue à défiler, tout en continuant à cliquer sur le bouton bascule, le listitem et l'imageview? Je suis coincé sur toute la journée, et il me donne un mal de tête :(

Répondre

16

Une autre recherche rapide avant que je rentre chez moi, et je suis tombé sur ceci:

How to fire onListItemClick in Listactivity with buttons in list?

CodeFusionMobile mentionne le réglage de la android:descendantFocusability propriété de la mise en page de liste "blocksDescendants", et donc j'essayé de faire ça. Tout fonctionne comme prévu maintenant. Scrolling fonctionne, onListitemClicked œuvres, en cliquant sur les ToggleButton œuvres, en cliquant sur les œuvres ImageView.

Jus t pour le rendre clair ... Dans le parent RelativeLayout, tout en haut de la row.xml, j'ai ajouté

android:descendantFocusability="blocksDescendants"