¿Cómo se obtiene el número de página actual de un ViewPager para Android?

Quiero saber la posición actual de la página de ViewPager . Creo un adaptador y configuro este adaptador para ViewPager . Ahora quiero saber el número de página actual o la posición de la vista actual, porque quiero comenzar algunos eventos adicionales en esa página en particular.

Utilicé viewPager.setCurrentItem(1); para configurar el primer elemento.

¿Hay algún método similar para obtener la página actual?

en los últimos paquetes también puedes usar

 vp.getCurrentItem() 

o

vp es el viewPager,

 pageListener = new PageListener(); vp.setOnPageChangeListener(pageListener); 

tienes que poner un oyente de cambio de página para tu viewPager. No hay ningún método en viewPager para obtener la página actual.

 private int currentPage; private static class PageListener extends SimpleOnPageChangeListener{ public void onPageSelected(int position) { Log.i(TAG, "page selected " + position); currentPage = position; } } 

Hay un método object_of_ViewPager.getCurrentItem() que devuelve la posición de la página actualmente vista del buscapersonas de la vista

Si solo quiere la posición, vp.getCurrentItem() se la proporcionará, no es necesario aplicar onPageChangeListener () solo para ese propósito.

Descubrirá que setOnPageChangeListener está en desuso, use addOnPageChangeListener, como se muestra a continuación:

 ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { if(position == 1){ // if you want the second page, for example //Your code here } } @Override public void onPageScrollStateChanged(int state) { } }); 

getCurrentItem() , en realidad no da la posición correcta para la primera y la última página que lo arreglé agregando este código:

 public void CalcPostion() { current = viewPager.getCurrentItem(); if ((last == current) && (current != 1) && (current != 0)) { current = current + 1; viewPager.setCurrentItem(current); } if ((last == 1) && (current == 1)) { last = 0; current = 0; } display(); last = current; } 

Para este problema, el detector Onpagechange es el mejor Pero también tendrá un pequeño error: no detectará el tiempo de inicio de la posición 0. Una vez que cambie la página, comenzará a detectar la posición seleccionada en la página … Para esto problema que encontré la solución más fácil

1. Debe mantener el valor de posición seleccionado y luego usarlo ….
2. Caso 1: Al comienzo de la posición siempre es Cero …
Caso 2: supongamos que si configura el elemento actual significa que establecerá ese valor en la posición de mantenimiento
3. Luego haz tu acción con el uso de eso mantente en tu actividad …

 Public int maintain=0; myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i2) { //Toast.makeText(MyActivity.this, i+" Is Selected "+data.size(), Toast.LENGTH_SHORT).show(); } @Override public void onPageSelected( int i) { // here you will get the position of selected page maintain = i; } @Override public void onPageScrollStateChanged(int i) { } }); updateButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MyActivity.this, i+" Is Selected "+data.size(), Toast.LENGTH_SHORT).show(); data.set(maintain, "Replaced "+maintain); myViewPager.getAdapter().notifyDataSetChanged(); } }); 

No hay ningún método getCurrentItem () en viewpager.i ya verificó la API

El método setOnPageChangeListener () está en desuso. Use addOnPageChangeListener (OnPageChangeListener) en su lugar.

Puede usar OnPageChangeListener y obtener la posición dentro del onPageSelected() , este es un ejemplo:

  viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { Log.d(TAG, "my position is : " + position); } @Override public void onPageScrollStateChanged(int state) { } }); 

O simplemente use getCurrentItem () para obtener la posición real:

 viewPager.getCurrentItem();