¿Cómo obtiene el número de página actual de un ViewPager para Android?
Quiero saber la posición de la página actual de ViewPager
. Creo un adaptador y configuro este adaptador en ViewPager
. Ahora quiero saber el número de página actual o la posición de la vista actual, porque quiero iniciar algunos eventos adicionales en esa página en particular.
Utilicé viewPager.setCurrentItem(1);
Para configurar el primer elemento.
- ViewPager ¿Fragmentos que se destruyen con el tiempo?
- FragmentPagerAdapter - cómo detectar un golpe o un clic de pestaña cuando el usuario va a una nueva pestaña?
- El fragmento ya no existe para la clave f0: index 1
- Cómo establecer el tamaño de ViewPager
- Implementación de desplazamiento circular en PagerAdapter
¿Existe un método similar para obtener la página actual?
- ViewPager dentro de Fragmento no muestra a pesar de usar getChildFragmentManager () al construir FragmentPagerAdapter
- Android cómo detener la actualización Fragmentos en el cambio de ficha
- Cambiar el color de las pestañas de navegación mediante programación
- Google Currents como estilo de lectura página por página
- ActionBarSherlock con ViewPager no llamando ViewPager fragmentos métodos de ciclo de vida al ir y volver de backstack
- Controla las direcciones en las que se puede desplazar el ViewPager de forma dinámica con la información de la interfaz de usuario
- No hay estilo ViewPagerIndicator en combinación con SherlockActionBar
- OnClick en ViewPager no activado
En los paquetes más recientes también puede usar
vp.getCurrentItem()
o
Vp es el viewPager,
pageListener = new PageListener(); vp.setOnPageChangeListener(pageListener);
Usted tiene que poner un oyente de cambio de página para su 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 paginador de vista
Si sólo desea que la posición, vp.getCurrentItem()
se lo dará a usted, no hay necesidad de aplicar el onPageChangeListener () para ese propósito solo.
getCurrentItem()
, en realidad no da la posición correcta para la primera y la última página 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; }
Usted descubrirá que setOnPageChangeListener está obsoleto, 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) { } });
No hay ningún método getCurrentItem () en viewpager.i ya ha comprobado la API
Para este problema el oyente Onpagechange es el mejor pero también tendrá un pequeño error que es que no detectará el tiempo de inicio tiempo de la posición 0 Una vez que va a cambiar la página que comenzará a detectar la posición de página seleccionada … Para esto Problema, la solución más fácil
1.You tiene que mantener el valor de la posición seleccionada luego utilizarlo ….
2. Caso 1: En el inicio de la posición siempre es Cero ….
Caso 2: Supongamos que si ajusta el elemento actual significa que establecerá ese valor en mantener la posición
3.Then hacer su acción con el uso de que mantener en su 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(); } });
El método setOnPageChangeListener () está obsoleto. Utilice addOnPageChangeListener (OnPageChangeListener) en su lugar.
Puede usar OnPageChangeListener y obtener la posición dentro del método 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();