2010-11-30 21 views
3

J'ai donc un problème avec les différentes pièces de ma ListView. Je les mets dans une ArrayList et j'utilise un ArrayAdapter personnalisé pour se connecter à ListView, ce que j'ai déjà fait, donc je ne crois pas qu'il y ait un problème. Au départ, la liste semble avoir les morceaux dans le bon ordre, mais ensuite je vais faire défiler la liste et le contenu sera ensuite chargé dans un ordre incorrect. Je fais alors défiler vers le haut et tout est brouillé. Quelqu'un at-il déjà rencontré cela?Le contenu de ListView brouillé sur le défilement

Merci -Jake

+1

Êtes-vous redéfinissant la méthode GetView de votre carte? Si oui, montrez ce que vous faites. –

+0

Jake, j'ai eu le même problème et j'ai trouvé la solution ici: http://stackoverflow.com/questions/2955218/listview-in-arrayadapter-order-gets-mixed-up-when-scrolling?rq=1 – Reiksiel

Répondre

5

Oui, votre problème est lié au fait que la liste réutilise les vues pour chaque ligne. Donc, dites que votre liste peut voir 5 éléments, mais votre ListAdapter a 15 éléments. Android créera 5 + 1 instances de votre vue de ligne au lieu de 15. Une pour chaque ligne de la liste + 1 pour quand la moitié du haut et du bas peuvent être vues. Lorsqu'une ligne est retirée de la zone visible, la liste recycle cette instance de vue pour une autre ligne au lieu d'en créer une nouvelle. Si vous ne réinitialisez pas correctement tous les composants de l'interface utilisateur chaque fois que vous obtenez des artefacts d'autres lignes. Vous devez vous assurer qu'à chaque fois que vous liez vos données des objets de votre liste de tableaux à la vue, vous définissez chaque champ à chaque fois.

Pour une meilleure description de ce voir

http://www.youtube.com/watch?v=N6YdwzAvwOA&feature=related

+0

Awesome . J'ai réalisé que j'étais en train de recycler mais je ne reprogrammais pas les champs pour qu'ils affichent les mêmes choses qu'avant. Merci. – jakehschwartz