Heim > Java > javaLernprogramm > Warum wird die getView()-Methode meines Android-ListViews mehrmals und in scheinbar zufälliger Reihenfolge aufgerufen?

Warum wird die getView()-Methode meines Android-ListViews mehrmals und in scheinbar zufälliger Reihenfolge aufgerufen?

Linda Hamilton
Freigeben: 2024-12-10 00:00:18
Original
425 Leute haben es durchsucht

Why Does My Android ListView's getView() Method Get Called Multiple Times and in an Apparently Random Order?

Warum wird getView mehrmals und in keiner zusammenhängenden Reihenfolge aufgerufen?

Wie Sie in Ihrem benutzerdefinierten Listenadapter beobachtet haben, wird die getView-Methode mehrmals aufgerufen jede Zeile, und es geschieht scheinbar auf willkürliche Weise. Dieses Verhalten kann verwirrend sein, stellt aber eigentlich kein Problem im Android-Design dar.

Warum mehrere Aufrufe?

Obwohl allgemein angenommen wird, dass getView nur für sichtbare Zeilen aufgerufen werden sollte, ist das nicht der Fall. ListView-Elemente werden recycelt und wiederverwendet, während Sie durch die Liste scrollen. Um diese Wiederverwendung zu erleichtern, misst ListView Ansichten für Zeilen, die bald sichtbar werden, vorab und speichert sie zwischen. Dieser Vormessungsprozess erfordert mehrere Aufrufe von getView, um die Abmessungen der Ansicht zu bestimmen.

Die „Keine kohärente Reihenfolge“

Der wahrgenommene Mangel an Ordnung bei getView-Aufrufen ist ebenfalls ein Nebeneffekt von Recycling. Wenn Zeilen aus der Ansicht gescrollt werden, werden die zugehörigen Ansichten aus dem Cache entfernt und für Ansichten wiederverwendet, die bald sichtbar werden. Dies bedeutet, dass die Reihenfolge der getView-Aufrufe je nach Scrollverhalten des Benutzers variieren kann.

Ihr spezifisches Beispiel

In Ihrem Fall haben Sie der ListView eine wrap_content-Höhe bereitgestellt. Dadurch wird ListView gezwungen, mehrere untergeordnete Elemente zum Zeitpunkt des Layouts zu messen, um die eigene Höhe zu bestimmen. Folglich erstellt ListView Cache-Ansichten für diese untergeordneten Elemente, bevor Sie überhaupt mit dem Scrollen beginnen.

Fazit

Der Recyclingmechanismus von ListView ist für die Aufrechterhaltung einer reibungslosen Scrollleistung unerlässlich. Auch wenn die Reihenfolge und Anzahl der getView-Aufrufe unregelmäßig erscheinen mag, ist dies ein natürliches Nebenprodukt dieses Mechanismus und kein Fehler oder Bug.

Das obige ist der detaillierte Inhalt vonWarum wird die getView()-Methode meines Android-ListViews mehrmals und in scheinbar zufälliger Reihenfolge aufgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage