Ich habe diesen Code für eine RecyclerView.
recyclerView = (RecyclerView)rootview.findViewById(R.id.fabric_recyclerView);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new RV_Item_Spacing(5));
FabricAdapter fabricAdapter=new FabricAdapter(ViewAdsCollection.getFabricAdsDetailsAsArray());
recyclerView.setAdapter(fabricAdapter);
Ich muss wissen, wann die RecyclerView beim Scrollen die unterste Position erreicht. Ist es möglich ? Wenn ja, wie?
android
scroll
android-recyclerview
Adrian
quelle
quelle
Antworten:
Es gibt auch einen einfachen Weg, dies zu tun
Richtungs-Ganzzahlen: -1 für Auf, 1 für Ab, 0 geben immer false zurück.
quelle
if (!recyclerView.canScrollVertically(1) && !mHasReachedBottomOnce) { mHasReachedBottomOnce = true Toast.makeText(YourActivity.this, "Last", Toast.LENGTH_LONG).show();}
newState == RecyclerView.SCROLL_STATE_IDLE
in dieif
Anweisung würde funktionieren.Verwenden Sie diesen Code, um wiederholte Anrufe zu vermeiden
quelle
Implementieren Sie einfach einen addOnScrollListener () in Ihrer Recyclingansicht. Implementieren Sie dann im Scroll-Listener den folgenden Code.
quelle
'findFirstVisibleItemPosition'
aufandroid.support.v7.widget.RecyclerView
(recyclerView.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
. Diese Arbeit.Die Antwort ist in Kotlin, es wird in Java funktionieren. IntelliJ sollte es für Sie konvertieren, wenn Sie kopieren und einfügen.
Dies funktioniert auch,
LinearLayoutManager
da dieselben Methoden wie oben verwendet werden. NämlichfindLastVisibleItemPosition()
undgetItemCount()
(itemCount
in Kotlin).quelle
Ich habe mit den obigen Antworten keine perfekte Lösung gefunden, weil sie sogar zweimal ausgelöst wurde
onScrolled
quelle
recyclerView.canScrollVertically(direction)
Richtung ist nur eine ganze Zahl + vs - also kann sie 4 sein, wenn sie unten ist, oder -12, wenn sie oben ist.Versuche dies
Ich habe oben Antworten verwendet, es läuft immer, wenn Sie am Ende der Recycler-Ansicht gehen,
Wenn Sie nur einmal prüfen möchten, ob es sich auf einem Boden befindet oder nicht? Beispiel: - Wenn ich die Liste mit 10 Elementen habe, wenn ich nach unten gehe, wird sie mir angezeigt. Wenn ich von oben nach unten scrolle, wird sie nicht erneut gedruckt. Wenn Sie weitere Listen hinzufügen und dorthin gehen, wird sie erneut angezeigt.
Hinweis: - Verwenden Sie diese Methode, wenn Sie beim Schlagen der API mit dem Versatz umgehen
Erstellen Sie eine Klasse mit dem Namen EndlessRecyclerViewScrollListener
Verwenden Sie diese Klasse wie folgt
Es läuft perfekt an meinem Ende, bitte, wenn Sie irgendwelche Probleme haben
quelle
Es gibt meine Implementierung, für die es sehr nützlich ist
StaggeredGridLayout
.Verwendung :
Listener-Implementierung:
quelle
Ich habe auch nach dieser Frage gesucht, aber keine Antwort gefunden, die mich zufriedenstellte. Deshalb erstelle ich eine eigene Realisierung von recyclerView.
andere Lösungen sind weniger präzise als meine. Beispiel: Wenn das letzte Element ziemlich groß ist (viel Text), erfolgt der Rückruf anderer Lösungen viel früher, als recyclerView wirklich den Boden erreicht hat.
Meine Lösung behebt dieses Problem.
dann in Ihrer Aktivität / Fragment:
hoffe es wird jemand hepl ;-)
quelle
Nachdem ich mit den meisten anderen Antworten in diesem Thread nicht zufrieden war, fand ich etwas, das ich für besser halte und das hier nirgendwo zu finden ist.
Dies ist einfach und wird unter allen Bedingungen genau einmal getroffen, wenn Sie nach oben oder unten gescrollt haben.
quelle
Das ist meine Lösung:
quelle
state
diese Aufzählung?Wir können Interface verwenden, um die Position zu erhalten
Schnittstelle: Erstellen Sie eine Schnittstelle für den Listener
Aktivität:
Adapter:
quelle