SimpleCursorAdapter – bindView wird bei erstem Eintrag doppelt aufgerufen

Weniger ein Problem, man muss nur wissen, warum das hier doppelt aufgerufen wird.
In meinem Falle war die Ursache, dass ich bei der zugrundeliegenden ListView bei layout_height => 0dp (in Verbindung mit layout_weight) bzw. wrap_content gewählt habe. Warum das ganze so ist? Keine Ahnung, aber evtl. muss Android bindView einmal aufrufen, um die Höhe einer Listzeile zu berechnen.
Jedenfalls löste eine Änderung von wrap_content auf match_parent das Problem. Aber in meiner App soll bei bestimmten Zeilen (z.B. bei der ersten) eine Aktion ausgeführt werden. Gleichzeitig habe ich unter der ListView noch weitere Elemente, die dargestellt werden sollen. Da hilft mir eigentlich nur wrap_content und layout_weight.
Meine Lösung: eine boolsche Variable im Adapter, die nach dem erste bindView-Durchlauf auf false gesetzt wird und somit kennzeichnet, dass es nicht der Messlauf ist.

Falls jemand eine bessere Lösung hat, kann er diese gerne hier hinterlassen 😉

Leave a Reply