9
votes

Gardez la position de défilement avec chaque actualisation dans la vue de la liste

J'ai défini une minuterie dans mon application, je pourrais obtenir des informations à partir d'un service Web et a abouti à une vue de liste à afficher. Maintenant, mon problème est que chaque fois que la minuterie fonctionne, faites défiler vers le début ...

Comment puis-je garder la position de défilement avec chaque actualisation de la liste de la liste?

Partie de mon code: > xxx

tnx.


5 commentaires

Stackoverflow.com/a/3035521/931982


Dupliqué possible de Maintenir / sauvegarder / restaurer la position de défilement lors du retour à une liste de liste


Ces liens ne résolvent pas mon problème, car mon problème est une autre chose. Mon ListView reçoit automatiquement une donnée de service Web, puis faites défiler la position au début (position supérieure) ...., j'espère que vous n'entraînerez-moi ... TNX.


CMON PERSONNES, Il définit chaque fois un nouvel adaptateur, il doit la mettre à jour à la place ou utiliser une fonction comme Addelement, puis appeler notifierdataschange. Après de second, consultez votre problème: appelez clairement, appelez Ajout d'élément en boucle, appelez notifydataschange . Le nettoyage dépend si vos éléments sont toujours nouveaux ou identiques à de nouvelles


Réglage de l'adaptateur Chaque fois semble diabolique mais toujours les gens continuent de le faire ...


4 Réponses :


6
votes

Vous pouvez ajouter l'attribut suivant à votre listview code> dans xml.

in the android:transcriptMode attribute. 


0 commentaires

1
votes

Il y a un Bon article de Chris Banes . Pour la première pièce, il suffit d'utiliser ListView # SetSelectionFromtop (int) pour garder le listview dans la même position visible. Pour conserver le listview à partir de FlicCinging, la solution consiste simplement à bloquer la liste de la vision de la publication des enfants.


0 commentaires

14
votes

n'appelle pas SetAdapter () . Faites quelque chose comme ceci: xxx


1 commentaires

Sont allchat et all_chat mêmes variables? Passez l'allathat au constructeur de l'adaptateur, puis changer la référence Allchat ne signifie pas que Allchat sera modifié dans l'adaptateur.



2
votes

J'ai eu le même problème, j'ai essayé beaucoup de choses pour empêcher la liste de changer de position de défilement, notamment: xxx

et ne pas appeler listview.setadapter (); / code> Aucun de cela n'a fonctionné avant d'avoir trouvé Cette réponse :

qui ressemble à ceci: XXX

Explication:


Listview.getFirsVisiblePosition () Renvoie l'élément de liste VISIBLE TOP. Mais cet élément peut être partiellement défilé hors de la vue et si vous souhaitez restaurer la position exacte de défilement de la liste, vous devez obtenir ce décalage. Donc listview.getchildat (0) renvoie le "/ code> de l'élément de liste supérieure, puis vue.getop () - mlist.getpaddingtop () Renvoie son compensation relative du haut de la liste listview . Ensuite, pour restaurer la position de défilement ListView , nous appelons listview.setselectionfromtop () avec l'index de l'élément que nous voulons et un décalage de positionner son bord supérieur de la Haut du ListView .


0 commentaires