2010-10-26 13 views
1

J'ai ArrayList d'objets personnalisés qui sont les données sous-jacentes d'un ArrayAdapter pour un ListView.notifyDataSetChanged() question de performance et quand/comment appeler par rapport à un lot de modifications de données

Parfois, ces données sont modifiées dans un lot, telles que l'extraction d'un ensemble de nouveaux éléments à partir du Web. Lorsque les données sont modifiées dans un lot, doit notifyDataSetChanged() appelée après chaque ajout() à la ArrayList

Certains sur le code simplifié:

for(Object object : newObjects){ 
    list.add(object); 
    adapter.notifyDataSetChanged(); 
} 

ou doit-il être appelé une fois après que toutes les articles du lot ont été ajoutés?

for(Object object : newObjects){ 
    list.add(object); 
} 
adapter.notifyDataSetChanged() 

Dites qu'il y a un lot de 50 nouveaux objets. Si 50 appels notifyDataSetChanged() sont effectués l'un après l'autre, comme dans le premier exemple, les vues se redessineront elles-mêmes 50 fois de suite (j'imagine un hit de performance majeur) ou n'effectueront le dernier appel que dans un sens eux une fois?

Je me demande essentiellement si je peux utiliser la première méthode ou si elle aura un impact majeur sur les performances?

Merci

Répondre

0

Lorsque vous appelez notifyDataSetChanged(), il ne redessiner pas la vue immédiatement. C'est au contrôleur de thread de l'interface utilisateur de savoir quand redessiner. Bien qu'il ne apparaissent instantanious. Vous devriez essayer et voir s'il y a un problème de performance. Nous ne pouvons vraiment pas répondre à cela pour vous. S'il est logique de mettre à jour la liste après tous les ajouts, faites-le.