Jak programowo przewinąć do określonej pozycji w ListView
?
Na przykład mam String[] {A,B,C,D....}
i muszę ustawić górną widoczną pozycję ListView
na indeks 21 mojego String[]
.
android
android-listview
Maxime
źródło
źródło
Odpowiedzi:
W przypadku bezpośredniego przewijania:
Aby uzyskać płynne przewijanie:
źródło
smoothScrollToPosition
nie działa, jakaś sugestia?listView.post(() -> listView.smoothScrollToPosition());
Aby uzyskać płynne przewijanie z czasem przewijania:
getListView().smoothScrollToPositionFromTop(position,offset,duration);
Uwaga: z API 11.
Odpowiedź HandlerExploit była tym, czego szukałem, ale mój widok listy jest dość długi i zawiera również przewijanie alfabetu. Potem stwierdziłem, że ta sama funkcja może przyjmować również inne parametry :)
Edytować: (z sugestii AFD)
Aby ustawić bieżący wybór:
źródło
Umieść swój kod w module obsługi w następujący sposób,
a następnie wywołaj tę metodę w następujący sposób:
TWOJE ZDROWIE!!!
źródło
Ustawiłem OnGroupExpandListener i zastąpiłem onGroupExpand () jako:
i użyj metody setSelectionFromTop (), która ustawia wybrany element i umieszcza zaznaczenie y pikseli od górnej krawędzi ListView. (W trybie dotykowym element nie zostanie wybrany, ale nadal będzie odpowiednio pozycjonowany) (dokumentacja systemu Android)
źródło
Listview
Przewijania zostanie umieszczony na górze domyślnie, ale jeśli chcesz, aby przewinąć niewidoczny następnie użyj tego:źródło
Jeśli ktoś szuka podobnej funkcji, takiej jak aplikacja Gmail,
Przewijanie widoku listy zostanie domyślnie umieszczone na górze. Dzięki za podpowiedź. amalBit. Po prostu odejmij to. Otóż to.
źródło
Jeśli ktoś jest zainteresowany obsługą listy, wyświetl jeden wiersz w górę / w dół za pomocą przycisku. następnie.
źródło
Jeśli chcesz przejść bezpośrednio do żądanej pozycji w listView, po prostu użyj
listView.setSelection (pozycja int);
a jeśli chcesz płynnie przejść do żądanej pozycji w listView, po prostu użyj
listView.smoothScrollToPosition (pozycja int);
źródło
To właśnie zadziałało dla mnie. Połączenie odpowiedzi AmalBit i Melbourne Lopes
a następnie wywołaj tę metodę na przykład:
źródło
jego łatwy wybór list-view.set (pozujesz); lub możesz zapisać swoją pozycję z sharedprefrence, a kiedy zaczniesz aktywność, otrzymasz preferencje i ustawisz wybór na ten int
źródło
-Jeśli chcesz, aby lista przewinęła się w górę \ świt do określonej pozycji:
-jeśli chcesz uzyskać pozycję konkretnego elementu w myListView:
-Również to
myListView.getVerticalScrollbarPosition(i);
może ci pomóc.Powodzenia :)
źródło
Do precyzyjnego zdefiniowania pozycji przewijania listView potrzebne są dwie rzeczy:
Aby uzyskać aktualną listę Wyświetl pozycję przewijania:
Aby ustawić pozycję przewijania widoku listy:
źródło
Znalazłem to rozwiązanie, które umożliwia przewijanie w górę iw dół za pomocą dwóch różnych przycisków.
Zgodnie z sugestią @Nepster implementuję przewijanie programowo przy użyciu funkcji getFirstVisiblePosition () i getLastVisiblePosition (), aby uzyskać bieżącą pozycję.
źródło