¿Cómo puedo hacer una vista circular pager2 (desplazamiento infinito) en java? por ejemplo, quiero pasar de la página 1 a la página 100 mientras deslizo hacia la izquierda y no detenerme.
myViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { super.onPageScrolled(position, positionOffset, positionOffsetPixels); Log.d(CPAct,"onPageScrolled "+position); } @Override public void onPageSelected(int position) { super.onPageSelected(position); Log.d(CPAct,"onPageSelected Position: "+position); } @Override public void onPageScrollStateChanged(int state) { super.onPageScrollStateChanged(state); Log.d(CPAct,"onPageScrollStateChanged state: "+state); if (state == ViewPager2.SCROLL_STATE_IDLE) { if (myViewPager2.getCurrentItem() == 0) myViewPager2.setCurrentItem(99, false); else if (myViewPager2.getCurrentItem() == 99) myViewPager2.setCurrentItem(0, false); }Probé el código anterior en initView() después de configurar el adaptador, pero no funciona correctamente. por ejemplo, cuando deslizo el dedo hacia la izquierda desde la página 2, va directamente a la última página y se omite la página 1. Lo mismo sucede cuando deslizo el dedo hacia la derecha para llegar a la última página y va directamente a la página 1. Solo quiero hacer un Desplazamiento infinito sin saltar ninguna página.
debe publicar el código del Adapter , allí debe devolver Integer.MAX_VALUE en getCount e introducir el modelo de recuperación adecuado para dibujar el elemento de la lista; por ejemplo, si tiene ArrayList data , use data.get(position % data.getItemCount()) en getItem ( ya que la matriz tiene un tamaño fijo, pero está informando al adaptador sobre una cantidad muy grande/infinita de elementos)
su enfoque actual no es bueno, ya que está manipulando las posiciones de View , esto sin duda agregará algunas fallas visuales tarde o temprano, y tampoco es muy eficiente