Wie kann ich programmgesteuert zu einer bestimmten Position in einem scrollen ListView
?
Zum Beispiel habe ich eine String[] {A,B,C,D....}
, und ich muss das oberste sichtbare Element von ListView
auf den Index 21 von my setzen String[]
.
android
android-listview
Maxime
quelle
quelle
Antworten:
Für eine direkte Schriftrolle:
Für eine reibungslose Schriftrolle:
quelle
smoothScrollToPosition
funktioniert nicht, irgendein Vorschlag?listView.post(() -> listView.smoothScrollToPosition());
Für einen SmoothScroll mit Bildlaufdauer:
getListView().smoothScrollToPositionFromTop(position,offset,duration);
Hinweis: Ab API 11.
Die Antwort von HandlerExploit war genau das, wonach ich gesucht habe, aber meine Listenansicht ist ziemlich lang und auch mit Alphabet-Scroller. Dann habe ich festgestellt, dass dieselbe Funktion auch andere Parameter annehmen kann :)
Bearbeiten: (Aus AFDs Vorschlag)
So positionieren Sie die aktuelle Auswahl:
quelle
Geben Sie Ihren Code wie folgt in den Handler ein:
und rufen Sie diese Methode dann wie folgt auf:
PROST!!!
quelle
Ich habe OnGroupExpandListener festgelegt und onGroupExpand () wie folgt überschrieben:
Verwenden Sie die Methode setSelectionFromTop (), mit der das ausgewählte Element festgelegt und die Auswahl y Pixel vom oberen Rand der ListView positioniert wird. (Im Touch-Modus wird das Element nicht ausgewählt, aber dennoch entsprechend positioniert.) (Android-Dokumente)
quelle
Der
Listview
Bildlauf wird standardmäßig nach oben positioniert, Sie möchten jedoch einen Bildlauf durchführen, wenn er nicht sichtbar ist. Verwenden Sie dann Folgendes:quelle
Wenn jemand nach einer ähnlichen Funktionalität wie der Google Mail-App sucht,
Der Listenansicht-Bildlauf wird standardmäßig nach oben positioniert. Danke für den Tipp. amalBit. Subtrahiere es einfach. Das ist es.
quelle
Wenn jemand daran interessiert ist, listView eine Zeile nach oben / unten mit der Schaltfläche. dann.
quelle
Wenn Sie in einer Listenansicht direkt zur gewünschten Position springen möchten, verwenden Sie einfach
listView.setSelection (int position);
und wenn Sie reibungslos zur gewünschten Position in listView springen möchten, verwenden Sie einfach
listView.smoothScrollToPosition (int position);
quelle
Das hat bei mir funktioniert. Kombination der Antworten von amalBit & Melbourne Lopes
und rufen Sie diese Methode dann wie folgt auf:
quelle
seine einfache list-view.set Auswahl (Sie pos); oder Sie können Ihre Position mit sharedprefrencean speichern und beim Starten der Aktivität Einstellungen und Einstellungen auf diesen int erhalten
quelle
-Wenn Sie nur möchten, dass die Liste nach oben zu einer bestimmten Position rollt:
-wenn Sie die Position eines bestimmten Elements in myListView abrufen möchten:
-auch das
myListView.getVerticalScrollbarPosition(i);
kann dir helfen.Viel Glück :)
quelle
Sie benötigen zwei Dinge, um die Bildlaufposition einer listView genau zu definieren:
So erhalten Sie die aktuelle listView-Bildlaufposition:
So legen Sie die listView-Bildlaufposition fest:
quelle
Ich habe diese Lösung gefunden, um das Scrollen mit zwei verschiedenen Tasten nach oben und unten zu ermöglichen.
Wie von @Nepster vorgeschlagen, implementiere ich den Bildlauf programmgesteuert mit getFirstVisiblePosition () und getLastVisiblePosition (), um die aktuelle Position abzurufen.
quelle