2013-01-22 21 views
12

to nie jest powtórzenie innego pytania .. to bardziej rozszerzenie. Mam nadzieję :)Android przewiń do dołu widoku listy

Mam widok listy z kilkoma setkami pozycji w nim .. Są datowane stemple w innym widoku.

Po wyświetleniu ekranu chcę, aby przewinął się do dołu, tak aby wyświetlane były najnowsze elementy, ale w logiczny "koniec rzeczy".

m_list.setSelection(m_list.getCount()-1); 

Kewl jak ... ale :(Teraz moja lista nie będzie przewijać. Wydaje się, zatrzymany na dole. Widzę „samochód”, a to jest bardzo małe, i na dole.

Ok .. więc moje zadanie jest w ten sposób ... Jak zacząć od przewijania do dołu, ale nadal pozwalam użytkownikowi (mnie) przewijać w górę, kiedy (ja znowu) chcę przewinąć w górę

+0

Jak nazywa się funkcję setSelection? – Ferdau

+0

OMG! To pytanie było genialne "Wzywałam to w moim wyciągnięciu .. To był początkowo część mojego kodu testowego ... NIESAMOWITE! – MollyCat

+0

Awansuj o odpowiedź brilli? – Ferdau

Odpowiedz

42

ustawić na swoim listview w pliku XML.

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

to działa dla Ciebie? – moDev

+0

To się nie udało. Miałem już m_list.setTranscriptMode (ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); w moim kodzie. Moja lista wydaje się zablokowana. – MollyCat

+0

m_list.setStackFromBottom (true); też nic nie robił. Uwaga: nie zdefiniowałem mojego ctrl w XML – MollyCat

12

Możesz użyć następujących kod do osiągnięcia u dołu widoku listy:

listView.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      listView.setSelection(listView.getCount()); 
     } 
    }, 500); 

Spowoduje to ustawienie opóźnienia 500 ms. Możesz też użyć tej metody, aby móc przewijać widok listy w sposób pragmatyczny.

+0

To nie będzie przewijania do dołu. To, jak sugeruje nazwa metody, ustaw twój wybór na GÓRĘ ostatniego elementu. Jeśli twój przedmiot jest dość długi (powiedzmy, długi nagłówek), nie przyniesie to żadnego pożytku. – Sver

+0

listView.setSelection (listView.getCount()); powinien być listView.setSelection (listView.getCount() - 1); –

Powiązane problemy