Heim >Java >javaLernprogramm >Warum wird die Methode „getView' meiner ListView mehrmals und in scheinbar zufälliger Reihenfolge aufgerufen?
getView-Methode des benutzerdefinierten Listenansichtsadapters: Detaillierte Analyse mehrerer Aufrufe
Frage:
Warum wird in einem benutzerdefinierten Listenadapter die getView-Methode scheinbar zufällig mehrmals aufgerufen? Reihenfolge?
Antwort:
Die getView-Methode in einem benutzerdefinierten Listenadapter kann aufgrund der inhärenten Funktionsweise von ListView mehrmals und in beliebiger Reihenfolge aufgerufen werden. Hier ist eine Erklärung der im bereitgestellten Code beobachteten Verhaltensweisen:
ConvertViews:
Der Parameter „convertView“ stellt eine Ansicht dar, die zur Wiederverwendung recycelt wird. Wenn „convertView“ ungleich Null ist, bedeutet dies, dass ListView bereits eine Ansicht für die entsprechende Position gemessen und vergrößert hat. Anstatt eine neue Ansicht zu erstellen, verwendet der Adapter diese recycelte Ansicht wieder.
getView-Aufrufreihenfolge:
Es gibt keine garantierte Reihenfolge, in der getView für verschiedene Positionen aufgerufen wird . Die ListView ruft möglicherweise getView für mehrere Positionen auf, noch bevor eine Benutzereingabe empfangen wird. Dieses Verhalten tritt besonders häufig auf, wenn die Höhe der ListView auf „wrap_content“ festgelegt ist, wie im angegebenen XML-Layout.
Warum getView mehrmals aufgerufen wird:
getView wird aufgerufen Aufgrund des Messvorgangs von ListView wird die Messung für jede Position mehrmals durchgeführt. Wenn die ListView zum ersten Mal angezeigt wird, misst sie mehrere untergeordnete Elemente aus dem Adapter, um ihre eigene Höhe zu bestimmen. Dieser Messvorgang löst getView-Aufrufe für den sichtbaren Teil der Liste aus.
Unvorhersehbare ConvertViews:
Während der Benutzer scrollt, kann die ListView Ansichten wiederverwenden, die nicht mehr sichtbar sind und für neue Positionen wiederverwenden. Dies erklärt, warum der Parameter „convertView“ ungleich Null sein kann, selbst bevor der Benutzer gescrollt hat.
Schlussfolgerung:
Das Verhalten von getView beim Aufruf mag zwar ungewöhnlich erscheinen mehrmals und in einer unvorhersehbaren Reihenfolge ist kein Problem. Dies ist ein wesentlicher Bestandteil der Leistungsoptimierung von ListView durch die Wiederverwendung von Ansichten und die Messung nur einer Teilmenge der untergeordneten Elemente für das anfängliche Layout.
Das obige ist der detaillierte Inhalt vonWarum wird die Methode „getView' meiner ListView mehrmals und in scheinbar zufälliger Reihenfolge aufgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!