[ListView] Was ist "View Recycling"

T

Tersus

Gast
Guten Tag,

auf Stack Overflow gibt es sehr viele Erläuterungen. Leider ist mein English zu schlecht. Kann mir jemand erklären, was mit dem Wiederverwenden von Views in einem Adapter gemeint ist?

Danke!
 
Tutorial: Using lists in Android (ListView) - Tutorial
Englisches Tutorial: Making ListView Scrolling Smooth | Android Developers

Jeder einzelne Listeneintrag ist eine View. Jetzt müsste jedes mal wieder die XML inflated (das ist ressourcenfressend) werden, wenn ein neuer Eintrag beim Scrollen hinzugefügt wird. (Es werden immer nur die Einträge geladen/zum Anzeigen gebracht, die gerade sichtbar sind). Views generieren (inflaten) ist ressourcenfressend, die einzelnen Views finden (findViewByID) ebenso. Jetzt kann man aber, da ja oben Views aus dem Sichtbereich fliegen, diese Views "wiederverwenden". D.h. wenn die View/Listeneintrag die/der von unten dazukommt gleich aussieht, kann man doch einfach die View nehmen, die einzelnen Elemente neu setzen (Inhalt) und wieder anzeigen.

Deutsches Tutorial: Effiziente ListView in Android | Kyp's Daddelkiste

Mit "Viewholder pattern" und der Googleeinstellung "Nur deutsch" solltest du genügend Material finden. Aber die bessere Empfehlung: Mach dir dein Customitemlayout (1 Bild, 3 Textviews), hau 200 Elemente rein und scroll mal hoch runter. Deine App wird langsam oder gar abstürzen. Dann nimmste das Viewholderpattern und wiederverwendest die Views, die oben/unten beim Scrollen rausfliegen. Dann siehst du den Unterschied.


Wenn mich nicht alles täuscht, brauchst du das aber nur, wenn du deinen eigenen Adapter schreibst ;)
 
Das Vogella-TUT habe ich schon durch. Teils verstanden, teils nicht, wegen schlechtem Englisch.

Nun habe ich den Sinn aber komplett verstanden.

Das brauche ich, weil ich tatsächlich meinen eigenen Adapter schreibe.

Grüße!
 

Ähnliche Themen

U
  • unerfahrenerAppEntwickler
Antworten
3
Aufrufe
707
swa00
swa00
A
Antworten
10
Aufrufe
1.021
swa00
swa00
Zurück
Oben Unten