Maison > Java > javaDidacticiel > Pourquoi la méthode « getView » de mon ListView est-elle appelée plusieurs fois et dans un ordre apparemment aléatoire ?

Pourquoi la méthode « getView » de mon ListView est-elle appelée plusieurs fois et dans un ordre apparemment aléatoire ?

DDD
Libérer: 2024-12-13 22:58:09
original
327 Les gens l'ont consulté

Why is my ListView's `getView` Method Called Multiple Times and in an Apparently Random Order?

Méthode getView de l'adaptateur d'affichage de liste personnalisé : analyse approfondie des appels multiples

Question :

Dans un adaptateur de liste personnalisé, pourquoi la méthode getView est-elle appelée plusieurs fois, apparemment au hasard order?

Réponse :

La méthode getView dans un adaptateur de liste personnalisé peut être appelée plusieurs fois et dans n'importe quel ordre en raison de la nature inhérente du fonctionnement de ListView. Voici une explication des comportements observés dans le code fourni :

ConvertViews :

Le paramètre convertView représente une vue qui est recyclée pour être réutilisée. Lorsque convertView n'est pas nul, cela indique que ListView a déjà mesuré et gonflé une vue pour la position correspondante. Au lieu de créer une nouvelle vue, l'adaptateur réutilise cette vue recyclée.

Ordre d'appel getView :

Il n'y a aucun ordre garanti dans lequel getView sera appelé pour différentes positions . Le ListView peut appeler getView pour plusieurs positions avant même que l'entrée de l'utilisateur ne soit reçue. Ce comportement est particulièrement courant lorsque ListView a une hauteur définie sur wrap_content, comme dans la disposition XML donnée.

Pourquoi getView est appelé plusieurs fois :

getView est appelé plusieurs fois pour chaque position en raison du processus de mesure de ListView. Lorsque ListView est affiché pour la première fois, il mesure plusieurs enfants hors de l'adaptateur pour déterminer sa propre hauteur. Ce processus de mesure déclenche des appels getView pour la partie visible de la liste.

ConvertViews imprévisibles :

Au fur et à mesure que l'utilisateur fait défiler, ListView peut recycler les vues qui ne sont plus visibles. et réutilisez-les pour de nouveaux postes. Cela explique pourquoi le paramètre convertView peut être non nul avant même que l'utilisateur ait fait défiler.

Conclusion :

Bien que cela puisse paraître inhabituel, le comportement de getView étant appelé plusieurs fois et dans un ordre imprévisible n'est pas un problème. Cela fait partie intégrante de la façon dont ListView optimise les performances en réutilisant les vues et en mesurant uniquement un sous-ensemble d'enfants pour sa disposition initiale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal