2010-03-25 6 views
3

J'ai un ArrayAdapter alimentant un ListView. Je voudrais changer les données derrière le ArrayAdapter et mettre à jour le ListView. Cela ressemble à notifyDataSetChanged(); serait exactement ce que je cherche, mais il met à jour l'ensemble ListView, et je préférerais mettre à jour sur une base rangée par rangée.Comment éviter de redessiner toutes les vues dans un ArrayAdapter

Y a-t-il un moyen de le faire avec ArrayAdapter, ou dois-je gérer mes données d'une autre manière si je veux cette fonctionnalité?

Répondre

5

Cela ne fonctionne pas comme ça, pour autant que je sache.

Il ne redessinera que les lignes visibles. Cela arrive quand vous faites défiler quand même. Si vous faites défiler vers le bas et que l'une de vos lignes (une vue) est désactivée, Android la réutilise si possible lorsque vous dessinez des lignes qui s'affichent à partir du bas. C'est ce que le troisième paramètre (convertView) de ListAdapter.getView() est pour.

Je suis assez sûr qu'Android ne dessine que les lignes que vous pouvez voir dans tous les cas.

+0

Vérifié que cela fonctionne effectivement de cette façon. Merci – Hamy