Devo rilevare l'inizio/la fine e la direzione di scorrimento in una panoramica di riciclaggio. Il listener di scorrimento ha due metodi: onScrolled()
e onScrollStateChanged()
. Il primo metodo viene chiamato dopo l'avvio dello scorrimento (infatti viene chiamato onScrolled() e non onScrolling()). Il secondo metodo fornisce informazioni sullo stato ma non ho le informazioni sulla direzione. Come posso raggiungere il mio obiettivo?Rileva lo scorrimento iniziale e termina lo scorrimento in recyclerview
risposta
fase 1 è possibile creare una classe che estende RecyclerView.OnScrollListener e sovrascrivere questi metodi
public class CustomScrollListener extends RecyclerView.OnScrollListener {
public CustomScrollListener() {
}
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
switch (newState) {
case RecyclerView.SCROLL_STATE_IDLE:
System.out.println("The RecyclerView is not scrolling");
break;
case RecyclerView.SCROLL_STATE_DRAGGING:
System.out.println("Scrolling now");
break;
case RecyclerView.SCROLL_STATE_SETTLING:
System.out.println("Scroll Settling");
break;
}
}
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dx > 0) {
System.out.println("Scrolled Right");
} else if (dx < 0) {
System.out.println("Scrolled Left");
} else {
System.out.println("No Horizontal Scrolled");
}
if (dy > 0) {
System.out.println("Scrolled Downwards");
} else if (dy < 0) {
System.out.println("Scrolled Upwards");
} else {
System.out.println("No Vertical Scrolled");
}
}
}
passo 2- Dal setOnScrollListener è deprecato E 'meglio usare addOnScrollListener
mRecyclerView.addOnScrollListener(new CustomScrollListener());
Vedere la documentazione per onScrollStateChanged(int state)
. I tre valori possibili sono:
SCROLL_STATE_IDLE
: è fatto No scorrimento.SCROLL_STATE_DRAGGING
: l'utente sta trascinando il dito sullo schermo (o è stato fatto programaticallySCROLL_STATE_SETTLING
:. L'utente ha alzato il dito, e l'animazione è ora rallentando
Quindi, se si. vuole rilevare quando lo scorrimento è inizio e fine, quindi è possibile creare qualcosa di simile:
public void onScrollStateChanged(int state) {
boolean hasStarted = state == SCROLL_STATE_DRAGGING;
boolean hasEnded = state == SCROLL_STATE_IDLE;
}
OK ma come può rilevare anche la direzione ad lo stesso tempo? – greywolf82
È possibile eseguire l'override di 'onScrolled (int dx, int dy)' e controllare se 'dy' è positivo o negativo, che fornisce l'una o l'altra direzione. –
modo più semplice per farlo è quello di tirare fuori il tuo LayoutManager. Per esempio
private RecyclerView.OnScrollListener mListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
GridLayoutManager layoutManager=GridLayoutManager.class.cast(recyclerView.getLayoutManager());
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
int pastVisibleItems = layoutManager.findFirstCompletelyVisibleItemPosition();
if(pastVisibleItems+visibleItemCount >= totalItemCount){
// End of the list is here.
Log.i(TAG, "End of list");
}
}
}
Spero che aiuti!
qui è la soluzione completa per fare un'azione dopo scorrimento viene arrestato (per RecyclerView)
che ha corretto i miei OutOfBounds eccezione legati alla recyclerView scorrimento
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
//Your action here
}
});
- 1. Android: contenuto RecyclerView incasinato dopo lo scorrimento
- 2. MonoTouch - Rileva lo scorrimento di UITableView
- 3. Rileva i gesti dell'utente come lo scorrimento
- 4. Frammenti duplicati con RecyclerView visualizzati in ViewPager dopo lo scorrimento
- 5. Rileva la cella superiore corrente in UITableView dopo lo scorrimento
- 6. UIPageViewController disabilitare lo scorrimento
- 7. DISABILITA lo scorrimento orizzontale
- 8. È possibile ricevere una notifica quando UITableView termina lo scorrimento?
- 9. scrollTo durante lo scorrimento
- 10. vim - Interrompe lo scorrimento dopo il primo file che termina
- 11. Prevent RecyclerView mostra il contenuto precedente durante lo scorrimento
- 12. Disabilita lo scorrimento in listview
- 13. Prevenire lo scorrimento in fondo
- 14. Rileva quando RecyclerView raggiunge la posizione più bassa durante lo scorrimento
- 15. Come faccio ad attivare lo scorrimento orizzontale e disattivare lo scorrimento verticale in UIWebView?
- 16. Come rilevare lo scorrimento a sinistra e lo scorrimento a destra per Stacklayout in Xamarin.Forms?
- 17. Scorrimento iPad - l'intestazione è impostata su Fisso solo quando lo scorrimento termina
- 18. Rileva se l'elemento ha interrotto lo scorrimento del momento?
- 19. Previene lo scorrimento indietro fino alla prima diapositiva dopo lo scorrimento passato
- 20. simulatore ios: simula lo scorrimento e trascina
- 21. Ripristina lo scorrimento su UICollectionView
- 22. NestedScrollView scorrimento con recyclerview
- 23. UicollectionViewFlowLayout's stimatoItemSize interrompe lo scorrimento?
- 24. TVOS UITextView non lo scorrimento
- 25. UIScrollView: lo scorrimento non funziona
- 26. QGraphicsView: disabilita lo scorrimento automatico
- 27. limitare lo scorrimento sul footer
- 28. Trascinare lo scorrimento in un'app GTK +
- 29. Disabilitare/abilitare lo scorrimento in UIPageViewController
- 30. Perché lo scorrimento continuo scorre prima dello scorrimento?
Plus One ........ Funziona come un fascino. Grazie –
'RecyclerView.OnScrollListener' non è un'interfaccia/facepalm @ google dev che l'ha deciso. –