Beim Scrollen in einer Galerie wird der gedrückte Status aktiviert und der Klick-Listener von Unterelementen entfernt

9

Ich habe eine Galerie ziemlich komplizierter Gegenstände. Jedes Element besteht aus einem Bild und 2 Tasten. Wenn die Galerie lädt alles funktioniert, tun die Tasten, was sie sollen, und der gedrückte Zustand für die Tasten passiert nur beim tatsächlichen Drücken der Tasten.

Sobald ich jedoch die Galerie durchgeblättert habe, funktionieren die Tasten nicht mehr und ein Klick auf eine beliebige Stelle aktiviert den gedrückten Zustand für die Tasten.

Ich habe versucht, alles in ein LinearLayout einzubetten, das OnDown-Ereignisse nicht wie in dieser Antwort weitergibt blockiert nur Klickereignisse.

Ich bin mir bewusst, dass Gallery nicht das ideale Widget für komplizierte Layouts wie dieses ist, aber ich frage mich, ob es eine bessere Lösung für dieses Problem gibt.

UPDATE:

Ich werde versuchen, die Architektur ein wenig zu erklären. Ich habe eine FragmentActivity, die ein ListFragment enthält, das nur aus einem ListView besteht.

Das ListView besteht aus Gruppen kleinerer Elemente (Bettable) zusammen mit einigen Metainformationen. Diese Gruppen sind als Gallerys implementiert. Speziell Ich habe Gallery erweitert (genannt OneGallery), das mehrere Dinge erledigt, es stellt sicher, dass nur ein Gegenstand gleichzeitig gescrollt wird, und auch transformiert die Galerieelemente, während das Scrollen stattfindet. Hier ist der Code dafür

Hier ist der Adapter für die Galerie

Und hier ist der Code für das Bettable-Layout

    
Leo 01.08.2012, 17:35
quelle

2 Antworten

0

Versuchen Sie, ein neues Wrapper-Layout um die untergeordnete Ansicht hinzuzufügen und setPressed zu überschreiben. Die Galerie wird aufhören, ihren Zustand an die Kinder zu übergeben, und das erwähnte unerwünschte Verhalten, das du beschreibst, wird behoben.

    
Tolis Emmanouilidis 19.08.2012 23:03
quelle
-3

Dies ist Views Recycling. Versuchen Sie, das ViewHolder-Muster zu verwenden und richten Sie den Elementstatus für jeden getView-Aufruf ein. Wenn Sie dies tun möchten, müssen Sie den Ansichtszustand in Ihrem komplexen Objekt beibehalten. Zum Beispiel enthält Ihr komplexes Objekt TextView, ImageView und CheckBox

%Vor%

Ich hoffe, es wird hilfreich sein

    
Georgy Gobozov 01.08.2012 20:41
quelle