298 votes

Listview faites Défiler jusqu'à la fin de la liste après la mise à jour de la liste

Je tiens à vous assurer que la liste est défiler tout le chemin vers le bas, après j'ai mis à jour la liste en utilisant listAdapter, de sorte qu'il affiche le dernier élément entré dans la liste. Comment puis-je faire cela ?

J'ai essayé ceci mais pas de chance:

lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);

merci

427voto

Mason Lee Points 2361

En supposant que vous savez quand les données de la liste a changé, vous pouvez manuellement dire la liste pour faire défiler vers le bas par la définition de la liste de sélection à la dernière ligne. Quelque chose comme:

private void scrollMyListViewToBottom() {
    myListView.post(new Runnable() {
        @Override
        public void run() {
            // Select the last row so it will scroll into view...
            myListView.setSelection(myListAdapter.getCount() - 1);
        }
    });
}

239voto

dev.serghini Points 1541

Vous devez utiliser ces paramètres dans votre liste:

  • Faites défiler jusqu' lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);

  • Réglez la tête de la liste à fond lv.setStackFromBottom(true);

http://www.androidpeople.com/android-custom-dynamic-listview/

128voto

Chanaka udaya Points 1312

Dans votre xml mise en page, définissez les paramètres suivants pour le contrôle listview.

android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"

Cheers!!!

37voto

Wärting Points 519

Une combinaison de TRANSCRIPT_MODE_ALWAYS_SCROLL et setSelection fait le travail pour moi

ChatAdapter adapter = new ChatAdapter(this);

ListView lv = (ListView) findViewById(R.id.chatList);
lv.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
lv.setAdapter(adapter);

adapter.registerDataSetObserver(new DataSetObserver() {
    @Override
    public void onChanged() {
        super.onChanged();
        lv.setSelection(adapter.getCount() - 1);    
    }
});

9voto

Kevin Points 4235

À l'aide de : Réglez la tête de la liste à bas lv.setStackFromBottom(true);

A travaillé pour moi et la liste défile vers le bas automatiquement quand il est tout d'abord mis en visibilité. La liste défile comme il se doit avec TRANSCRIPT_MODE_ALWAYS_SCROLL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X