2016-07-25 16 views
4

Wie können Sie in einem Android RecyclerView durch die Elemente navigieren?Wie durch Elemente in Android RecyclerView?

Ich hätte gerne eine RecyclerView, die horizontal scrollt. Wenn das Ende nach rechts erreicht ist, wird einfach weitergescrollt, indem die Liste der Elemente neu gestartet wird. das gleiche auf der linken Seite.


Zum Beispiel:
Liste der Objekte: 0,1,2,3,4,5,6,7,8,9
Startansicht zeigt: 0,1,2,3 , 4,5,6,7
Nach Scrollen 5 Elemente auf der rechten Seite: 5,6,7,8,9,0,1,2
Nach dem Scrollen 2 Elemente nach links: 8,9,0,1 , 2,3,4,5

+0

die 'RecyclerView' wie üblich erweitern, notwendigen Methoden überschreiben, die nächsten/vorherigen Element und Update-Index auf Null/Max-Wert abrufen, wenn Grenzen erreicht ..... –

Antwort

5

eine andere Idee wäre, getItemCount() des Adapters Rückkehr Integer.MAX_VALUE und dann, um Ihren Artikel zu erhalten, sollten Sie itemsList.get(position % list.size) tun
auf diese Weise, wenn das Scrollen über Ihre aktuelle Liste Größe geht es beginnt von 0 wieder und zeigen die erstes Element der Liste nach der letzten

einer Sache könnte zu tun Aufruf seine scrollToPosition(int x) auf die LayoutManager wo x % yourList.size() == 0 und x somwhere die Nähe von Integer.MAX_VALUE/2 auf diese Weise ist die Scroll wie unendlich (~ 1 Milliarde Positionen in jede Richtung aussehen würde vom Startpunkt)

Wie im Kommentar angegeben, sollte, wenn die Listengröße 0 ist, getItemCount 0 zurückgeben.

return list.size == 0 ? 0 : Integer.MAX_VALUE 
+0

Ich denke, es wird perfekt funktionieren, wenn wir es nur nach rechts scrollen, aber wenn wir es nach links scrollen, wie berechnet man? –

+0

Die Art und Weise, wie ich es beschrieben habe, beginnt bei 0 Index, so dass Sie nicht in der Lage sein würden, nach links zu scrollen, eine Sache wäre das Aufrufen von 'scrollToPosition (int x)' auf dem 'LayoutManager' wo' x% yourList.size() == 0' und x ist irgendwo in der Nähe von 'Integer.MAX_VALUE/2' auf diese Weise würde die Schriftrolle wie unendlich aussehen (~ 1 Milliarde Positionen in jeder Richtung vom Startpunkt) – lelloman

+0

Das ist genau das, was ich war auf der Suche nach und es funktioniert perfekt. Vielen Dank! – studersi

-1

ich habe eine Idee, wie diese
Ersten neue Liste machen = 3x ursprüngliche Liste

original list: 0,1,2,3,4,5,6,7,8,9 
new list  : 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 

Wenn er zum ersten Mal der RecyclerView angezeigt werden, sollten Sie die RecyclerView auf die rechten Seite 10 Artikel blättern (10 ist die Größe der ursprünglichen Liste). Wenn der Benutzer dann weniger als 10 Elemente nach links oder rechts scrollt, funktioniert er wie ein Kreis.

Und, wenn sie bis zum Ende des rechten oder linken, sollten Sie RecyclerView wieder in den Zustand blättern, die Sie zum ersten Mal die RecyclerView anzuzeigen. Korrigieren Sie mich, wenn ich falsch liege. Danke für die Hilfe

+0

Dank für Ihren Vorschlag, aber ich werde mit dem einen @lelloman vorgeschlagen. Es müssen nicht so viele Daten gespeichert werden. – studersi

Verwandte Themen