Après avoir appelé notifydatasetchanged();
je veux faire défiler vers le bas de la liste pour que l'utilisateur voit le dernier enregistrement dans la liste.
(J'écris le module Chat, donc à cette fin, j'ai besoin que le dernier enregistrement au bas de la liste soit visible)
Quelqu'un peut-il me guider pour y parvenir?
Essayer
listView.post(new Runnable(){
public void run() {
listView.setSelection(listView.getCount() - 1);
}});
Le "post" semble être requis à un moment donné de mon expérience, en particulier si vous avez mis à jour très récemment la liste.
Je sais que cela a été répondu et vous avez pris la réponse et c'était il y a plus d'un an. Mais une meilleure façon de le faire est le mode Transcription. Pour une démonstration, consultez la démonstration de l'API Android Android sous Vues> Listes> Transcription).
Vous devez définir ce qui suit sur votre affichage de liste dans le XML.
Android:stackFromBottom="true"
Android:transcriptMode="alwaysScroll"
Cela fonctionnera toujours lorsque vous appelez notifyDataSetChanged()
. Vous pouvez définir Android:transcriptMode
Sur normal
à la place si vous voulez un résultat encore meilleur pour les applications de chat: il ne défilera vers le bas que si le dernier élément était déjà en vue. De cette façon, vos utilisateurs peuvent afficher le chat précédent sans interruption lorsque d'autres utilisateurs discutent.
Je sais qu'il est très tard pour répondre, mais cela aidera peut-être quelqu'un. En utilisant Android:transcriptMode="alwaysScroll"
forcera la vue de liste à défiler vers le bas (comme ici, nous avons utilisé Android:stackFromBottom="true"
) même si vous essayez de faire défiler vers le haut, ce qui exigeait généralement la plupart du temps. Donc au lieu de Android:transcriptMode="alwaysScroll
vous pouvez utiliser Android:transcriptMode="normal
qui se comportera de manière similaire à l'exigence de l'application de chat et ne forcera pas la liste de défilement toujours si l'utilisateur veut voir le contenu en haut.