Wahrscheinlich @droidev Ansatz der richtige ist, aber ich will nur etwas ein wenig anders veröffentlichen, die macht im Grunde den gleichen Job und benötigt keine Erweiterung des LayoutManagers.
Ein HINWEIS hier - das wird gut funktionieren, wenn Ihr Artikel (derjenige, den Sie oben auf der Liste scrollen möchten) auf dem Bildschirm sichtbar ist und Sie nur nach oben automatisch scrollen möchten.Es ist nützlich, wenn das letzte Element in der Liste eine Aktion hat, die neue Objekte in derselben Liste hinzufügt und Sie den Benutzer auf die neu hinzugefügte Elemente konzentrieren:
int recyclerViewTop = recyclerView.getTop();
int positionTop = recyclerView.findViewHolderForAdapterPosition(positionToScroll) != null ? recyclerView.findViewHolderForAdapterPosition(positionToScroll).itemView.getTop() : 200;
final int calcOffset = positionTop - recyclerViewTop;
//then the actual scroll is gonna happen with (x offset = 0) and (y offset = calcOffset)
recyclerView.scrollBy(0, offset);
Die Idee ist einfach: 1. Wir müssen die oberste Koordinate des RecyclerView-Elements ermitteln. 2. Wir müssen die oberste Koordinate des Ansichtselements erhalten, das wir nach oben scrollen möchten; 3. Am Ende mit dem Offset berechnet wir gerade Beispiel hart codierte Integer-Wert tun müssen, ist
recyclerView.scrollBy(0, offset);
200, die Sie, wenn der viewholder Artikel existiert nicht verwenden können, denn das ist möglich, auch ist.
Danke für diese kürzere Lösung. Nur noch zwei Dinge, die ich in meiner Implementierung berücksichtigen musste: Da ich eine horizontal scrollende Ansicht habe, musste ich 'protected int setzen getHorizontalSnapPreference() {return LinearSmoothScroller.SNAP_TO_START; } '. Außerdem musste ich die abstrakte Methode 'public PointF computeScrollVectorForPosition (int targetPosition) implementieren {return layoutManager.computeScrollVectorForPosition (targetPosition); } '. – AustrianDude
@AustrianDude 'computeScrollVectorForPosition' ist nicht abstrakt. Außerdem wird standardmäßig 'layoutManager.computeScrollVectorForPosition' zurückgegeben. –
Okay. Ich benutze leider die v7 Support-Bibliothek 23.4.0. Dies muss in einer späteren Version geändert worden sein. – AustrianDude