2010-11-19 8 views
5

Ich habe das Internet auf der Suche nach einer Antwort für mehrere Stunden geschleppt, aber ich kann nicht scheinen, jemanden zu finden, der in der Lage war, dies zu lösen.Android ListView mit anklickbaren Elementen in seinen Zeilen verursacht Probleme beim Scrollen

Ich habe eine Listenansicht, die einen benutzerdefinierten Adapter verwendet. Eine Reihe wie folgt aussieht

alt text

Die Liste durch ein Array gefüllt ist. Alles funktioniert super.

Nun möchte ich, dass ImageView und ToggleButton auf Klicks reagieren, also implementiere ich den OnClickListener in meinen Adapter, lege die Position der Elemente in das Tag jeder Ansicht und setze ihren onclicklistener auf diesen.

Funktioniert gut, außer jetzt kann ich nicht die onListItemClick für den Start einer Aktivität für den Artikel verwenden! OK, sage ich, ich mache nur den Relativlayout, der den Text in der Mitte hält, dort den selben onclicklistener. Funktioniert super. Alles ist klickbar und das Leben ist gut.

AUSSER! Jetzt, wenn ich die Liste scrolle, kann ich die Scroll nicht fortsetzen, indem ich einfach erneut schleudere. Dadurch wird das Scrollen gestoppt und ich muss noch einmal schleudern, um es wieder in Gang zu bringen. Es scheint, dass das Onclick-Ding bewirkt, dass die Fling-Bewegung als ein Tap oder etwas interpretiert wird (es löst nicht die Logik in onClick aus).

Ich weiß, dass dies möglich ist, indem Sie einfach auf die Telefonliste auf meinem HTC Hero, die genau die Art von Layout und Verhalten hat, die ich von meiner App will. Diese App scheint sogar den onItemClickListener zu haben.

Also, wie kann ich sicherstellen, dass die Liste scrollt, und immer noch in der Lage, auf den togglebutton, listitem und die Bildansicht klicken? Ich habe an diesem ganzen Tag stecken, und es hat mir Kopfzerbrechen :(

Antwort

16

Eine weitere schnelle Suche, bevor ich nach Hause gehen, und ich kam in dieses:

How to fire onListItemClick in Listactivity with buttons in list?

CodeFusionMobile erwähnt die android:descendantFocusability Einstellung Eigenschaft des Listenlayouts zu "blocksDescendants", und so habe ich versucht, das zu tun. Alles, was jetzt wie erwartet funktioniert. Scrolling funktioniert, onListitemClicked Werke, die ToggleButton Werke klicken, die ImageView Werke klicken.

Jus Um es klar zu machen ... In der Eltern , direkt an der Spitze der row.xml, fügte ich

android:descendantFocusability="blocksDescendants" 
Verwandte Themen