Cómo almacenar cada posición de la página viewpager en la lista de ellos?

Tengo una lista de viewpagers con UnderlinePageIndicator en RecyclerView, cerca de 30 en un fragmento. Quiero almacenar la posición de la página de cada buscapersonas en el objeto mFlat y recuperarlo desde mFlat en cada actualización del buscapersonas con la ayuda de

flatViewHolder.pager.setCurrentItem(mFlat.get(RecyclerViewPosition).getCur_pos()); 

Así que cuando intento guardar la página actual del primer buscapersonas está bien. Pero después de desplazar la página hacia abajo cada buscapersonas parece obtener este número de página – que está mal. Quiero almacenar todos los paginadores número de página. Aquí está mi viewpager addOnPageChangeListener

 flatViewHolder.pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int pos, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int pos) { // save current page pos in mFlat object mFlat.get(position).setCur_pos(pos); } @Override public void onPageScrollStateChanged(int state) { } }); 

Y esto se dispara cada vez en diferentes viewpagers cuando se desplaza la página

 @Override public void onPageSelected(int pos) { // save current page pos in mFlat object mFlat.get(position).setCur_pos(pos); } 

Creo que el problema es que estás llamando a addOnPageChangeListener :

 viewHolder.pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {[...]} 

Dado que se mantiene la referencia al buscapersonas, cada vez que se desplaza se agrega un nuevo escucha. Cuando se activa ese oyente, su variable de position se está utilizando en todos los oyentes asociados con la referencia del buscapersonas.

Por lo tanto, la solución rápida y sucia, creo, es usar setOnPageChangeListener . Este método está obsoleto , pero aún no se ha eliminado de las API. El set llamadas en lugar de add reemplazará al oyente asociado actualmente con el buscapersonas con el nuevo. Por lo tanto, sólo se escuchará un oyente.

Intentalo. Creo que te llevará a donde tienes que ir.

Usted necesita hacer la referencia en onPageScrolled también, Agregar:

  @Override public void onPageScrolled(int pos, float positionOffset, int positionOffsetPixels) { // Update reference for page scroll too mFlat.get(position).setCur_pos(pos); } 

Cuando se desplaza la página nunca se actualiza, sólo si selecciona la página se actualizará, como lo ha hecho anteriormente.

  • Settext cuestión en ViewPager versión particular - 5.1.1 android?
  • Android - ¿Cómo puedo localizar el indicador de pestañas entre las dos pestañas TextViews?
  • Android - ViewPager Adapter, establece el elemento principal antes de que el adaptador se instancia
  • Android PagerTabStrip - Eliminar espaciado
  • TabLayout y ViewPager -Tabs no funcionan después de pasar entre los elementos de cajones deslizantes
  • ¿Cómo implementar el botón en ViewPager?
  • Barra de herramientas y TabLayout no son visibles en dispositivos Android 4.4
  • ViewPager con WebView que permite pasar y no permitir el desplazamiento de WebView
  • Transición de RecyclerView a ViewPager
  • ¿Existe una manera de crear un control deslizante de vista previa en android
  • Listview dentro de un ViewPager con SlidingTabLayout - Problemas de altura
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.