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.

Gracias.

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); } } } }); 
  • Recyclerview desplazamiento pasado FAB
  • Error al inflar la clase android.support.v7.widget.RecyclerView
  • Android - ¿Cómo agregar una línea de separación discontinua / punteada para RecyclerView?
  • ¿Cómo obtener la Scrollposition en Recyclerview / Layoutmanager?
  • Reciclaje de artículos duplicados en desplazamiento
  • Lista ampliable con RecyclerView?
  • Mostrar la vista personalizada bajo el elemento RecyclerView deslizado
  • Confirmación y eliminación de deshacer en RecyclerView
  • Desactivar desplazamiento para posición en RecyclerView utilizando ItemTouchHelper.SimpleCallback
  • Creación de secciones dentro de RecyclerView
  • ¿Cómo tener un ListView / RecyclerView dentro de un RecyclerView padre?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.