2010-08-16 3 views
3

J'ai une vue de la galerie créée avec un SimpleAdapter qui étend BaseAdapter. Il contient plus d'éléments que ce qu'il peut contenir à l'écran. J'utilise donc Gallery.getFirstVisiblePosition() et Gallery.getLastVisiblePosition() pour obtenir la première et dernière position visible. Mais ces fonctions ne renvoient pas toujours les valeurs correctes, en particulier après avoir défini la position sélectionnée en appelant mGallery.setSelection() suivi d'un appel SimpleAdapter.notifyDataChanged(). La plupart du temps getFirstVisiblePosition() renvoie 0 même si le premier élément n'est pas visible.getFirstVisiblePosition() renvoie une valeur incorrecte dans la vue de la galerie

Notez également que le no. des éléments visibles dans la Galerie est différent en mode portrait et paysage. La valeur renvoyée par getFirstVisiblePosition() semble correcte en mode paysage mais est renvoyée incorrecte en mode portrait.

Quelqu'un a des idées/idées?

Merci!

+0

Copie possible de [getLastVisiblePosition retournant -1] (http://stackoverflow.com/questions/4036676/getlastvisibleposition-returning-1) – grebulon

Répondre

3

La première position visible ne sera mise à jour qu'après une mise en page. Vous ne pouvez pas appeler notifyDatasetChanged() et obtenir immédiatement la première position visible, vous devez attendre le passage suivant.

+0

Merci pour la réponse rapide Romain! Mais je ne suis pas tout de suite en train d'obtenir la première position visible, mais j'attends le passage suivant. Je devrais probablement ajouter quelques détails de mise en œuvre. J'ajoute des photos à la galerie une par une. Une fois qu'une image est ajoutée, j'appelle la méthode Gallery.setSelection() afin que la dernière image ajoutée soit toujours visible. J'appelle notifydataChanged() dans SimpleAdapter après avoir ajouté l'image. Donc ma question est quel écouteur dans la galerie est appelé par notifyDataChanged()? Il ne semble pas appeler onItemSelectedListener et il semble y avoir peu de documentation à ce sujet. – kriver

+1

et comment puis-je savoir que HRM Android a décidé de faire une nouvelle passe de mise en page? – Poutrathor

Questions connexes