2011-09-13 5 views
1

J'ai besoin de faire quelque chose lorsque mon ListView a fini d'afficher les éléments. Comme c'est le cas maintenant, j'appelle NotifyDataSetChanged, puis j'utilise list.FirstVisiblePosition mais le problème est qu'aucun élément n'est visible à ce moment.Android ListView sur l'affichage/l'événement initialisé

Alors, comment puis-je déclencher mon code lorsque les éléments sont visibles à l'écran?

La raison en est que je dois faire un peu de travail uniquement pour les éléments visibles.

Merci, Nicklas

Répondre

3

Quel type collection utilisez-vous avec le ListView? Si vous utilisez un type de collection "normal" (par exemple, System.Collections.Generic.List<T>), ListView ne voit aucun élément que vous ajoutez à la collection après la construction de ListView. Vous devrez utiliser JavaList<T> à la place.

Voir l'exemple à la fin de la Collections binding overview:

// This fails: 
var badSource = new List<int> { 1, 2, 3 }; 
var badAdapter = new ArrayAdapter<int>(context, textViewResourceId, badSource); 
badAdapter.Add (4); 
if (badSource.Count != 4) // true 
    throw new InvalidOperationException ("this is thrown"); 

// this works: 
var goodSource = new JavaList<int> { 1, 2, 3 }; 
var goodAdapter = new ArrayAdapter<int> (context, textViewResourceId, goodSource); 
goodAdapter.Add (4); 
if (goodSource.Count != 4) // false 
    throw new InvalidOperaitonException ("should not be reached.");