Quiero saber la posición actual de la página 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.
¿Existe un método similar para obtener la página actual?
android
android-viewpager
sam_k
fuente
fuente
setOnPageChangeListener()
está en desuso, utilíceloaddOnPageChangeListener()
en su lugar.Hay un método
object_of_ViewPager.getCurrentItem()
que devuelve la posición de la página actualmente vista del buscapersonasfuente
Si solo desea la posición,
vp.getCurrentItem()
se la dará, no es necesario que aplique onPageChangeListener () solo para ese propósito.fuente
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) { } });
fuente
Para este problema, el oyente de 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 de la página seleccionada ... Para esto problema, busco la solución más fácil
1. Tiene que mantener el valor de posición seleccionado y luego usarlo ....
2. Caso 1: Al comienzo de la posición siempre es cero ....
Caso 2: Suponga que si establece el elemento actual significa que establecerá valor para mantener la posición
3, luego haga su acción con el uso de ese 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(); } });
fuente
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; }
fuente
No hay ningún método getCurrentItem () en viewpager.i ya verifiqué la API
fuente
Puede usar OnPageChangeListener y obtener la posición dentro del
onPageSelected()
método, 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();
fuente