Listview przewiń do końca listy po zaktualizowaniu listy
Chciałbym się upewnić, że lista jest przewijana aż do dołu, po zaktualizowaniu listview za pomocą listAdapter, tak, że wyświetla ostatni element wprowadzony na liście. Jak mogę to zrobić ?
Próbowałem tego, ale bez powodzenia:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
Dziękuję
8 answers
Przypuśćmy, że wiesz, kiedy dane Listy się zmieniły, możesz ręcznie powiedzieć liście, aby przewijała się na dół, ustawiając wybór listy na ostatni wiersz. Coś w stylu:
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);
}
});
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-24 16:37:57
Musisz użyć tych parametrów w widoku listy:
Przewiń
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
Ustaw nagłówek listy na dole
lv.setStackFromBottom(true);
Można również ustawić te parametry w XML, np. tak:
<ListView
...
android:transcriptMode="alwaysScroll"
android:stackFromBottom="true" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-13 11:36:41
Kombinacja TRANSCRIPT_MODE_ALWAYS_SCROLL i setSelection sprawiła, że działa dla mnie
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);
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-27 09:43:40
Udało mi się użyć tego w odpowiedzi na kliknięcie przycisku, więc myślę, że możesz go również użyć po zaktualizowaniu zawartości:
myListView.smoothScrollToPosition(theListAdapter.getCount() -1);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-08 20:12:44
Za pomocą :
Ustaw nagłówek listy na dole lv.setStackFromBottom(true);
Działa dla mnie i lista jest przewijana do dołu automatycznie, gdy jest po raz pierwszy wprowadzony do widoczności. Następnie lista przewija się tak, jak powinna za pomocą TRANSCRIPT_MODE_ALWAYS_SCROLL
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-10 07:11:15
Aby umieścić to w fragmencie listy:
getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
getListView().setStackFromBottom(true);`
Dodał tę odpowiedź, ponieważ jeśli ktoś szuka w google tego samego problemu z ListFragment, po prostu znajdzie to..
Pozdrawiam
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-07 07:26:35
Używam
setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
Aby dodawać wpisy na dole, a starsze wpisy przewijać na górze, jak zapis czatu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-16 14:13:56
Tryb transkrypcji jest tym, czego chcesz i jest używany przez Google Talk i aplikację SMS/MMS. Czy poprawnie wywołujesz notifyDatasetChanged () na adapterze podczas dodawania elementów?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-31 06:42:35