RecyclerView desplazado UP / DOWN oyente
¿Cómo sabemos si el usuario se desplazó hacia abajo o hacia arriba en RecyclerView
?
He intentado con RecyclerView#OnScrollListener
, que da la cantidad de desplazamiento vertical y el estado de desplazamiento. ¿Cómo conseguimos la última posición de desplazamiento cuando empezamos a arrastrar y desplazamos la posición cuando el estado de desplazamiento está inactivo.
- Recyclerview anidado se desplaza por sí mismo
- Android - ¿Cómo cambiar la altura de Recyclerview dinámicamente?
- Java.lang.NullPointerException en android.support.v7.widget.RecyclerView.onMeasure
- RecyclerView Deslice con una vista inferior y no detecte clic
- ¿Por qué RecyclerView no tiene onItemClickListener ()?
Gracias.
- ¿Cómo puedo crear un RecyclerView circular (sin fin)?
- RecyclerView desprende la vista todavía visible
- ¿Por qué no overScrollBy () y onOverScrolled () funcionan con RecyclerView
- Cómo agregar Horizontal Recyclerview como un encabezado para Vertical Recyclerview?
- RecyclerView cortar el último artículo
- ¿Cuál es el equivalente de listview.getCount en caso de Recyclerview
- ¿Cómo puede RecyclerView ItemTouchHelper bloqueo deslizar artículo?
- StaggeredGridLayoutManager cambiar spanCount dinámicamente RecylerView
Prueba de esta manera:
private static int firstVisibleInListview; firstVisibleInListview = yourLayoutManager.findFirstVisibleItemPosition();
En tu oyente de desplazamiento:
public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int currentFirstVisible = yourLayoutManager.findFirstVisibleItemPosition(); if(currentFirstVisible > firstVisibleInListview) Log.i("RecyclerView scrolled: ", "scroll up!"); else Log.i("RecyclerView scrolled: ", "scroll down!"); firstVisibleInListview = currentFirstVisible; }
La respuesta aceptada funciona bien, pero @MaciejPigulski dio una solución más clara y ordenada en el comentario a continuación. Sólo lo pongo como una respuesta aquí. Aquí está mi código de trabajo.
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if (dy > 0) { // Scrolling up } else { // Scrolling down } } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) { // Do something } else if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { // Do something } else { // Do something } } });
Quería ocultar un diseño si la vista de reciclaje se desplaza hacia abajo y luego hacerla visible si la vista de reciclaje se desplaza hacia arriba. Hice un poco de pensamiento y surgió con esta lógica. La variable y es un int estático global. No olvide declarar y como static int y;
Espero que esto ayude a alguien 🙂
mRecyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener(lLayout) { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { // super.onScrolled(recyclerView, dx, dy); y=dy; } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if(mRecyclerView.SCROLL_STATE_DRAGGING==newState){ //fragProductLl.setVisibility(View.GONE); } if(mRecyclerView.SCROLL_STATE_IDLE==newState){ // fragProductLl.setVisibility(View.VISIBLE); if(y<=0){ fragProductLl.setVisibility(View.VISIBLE); } else{ y=0; fragProductLl.setVisibility(View.GONE); } } } });
- Android: Error: falla en la conversión al formato Dalvik
- Android – Cómo permitir el desplazamiento horizontal y vertical