2011-12-16 25 views
22

Quiero conseguir la posición actual de la vista visible de mi PagerAdapterAndroid PagerAdapter, obtener la posición actual

No vi una función obvia, como getPosition() y yo quiero uno.

Quiero añadir un objeto en su ArrayList en esa posición, pero necesito saber primero

Respuesta

39

se debería utilizar:

int position = mViewPager.getCurrentItem() 
+1

Estoy usando el paquete de compatibilidad, y amplía PagerAdapter, tampoco hay un método getCurrentItem. ¿Cómo puedo hacer uno? http://pastebin.com/LabjNvqL – CQM

+0

No, el oncreate solo se ejecuta al inicio cuando la página es 0, úselo en otro lugar cuando la página no es 0 y devolverá ese número de página –

+0

@CQM está utilizando un VIewPager y estás configurando su adaptador para esa clase, muéstrame la clase en la que tienes un –

3

https://github.com/Shereef/ViewPagerPlusExpandableList/blob/master/src/net/shereef/vewpagerplusexpandablelistexample/ViewPagerPlusExpandableListActivity.java#L204

si escribo después de esa línea

Log.i("pager",myPager.getCurrentItem()+""); 

mostrará en el logcat la página del artículo actual mientras que el o ncreate se está ejecutando, que siempre es 0

noteice que he utilizado el objeto para el viewpager no el adaptador.

+0

¿me estás diciendo que siempre devuelve 0? No entiendo, ¿te dirá una posición precisa? – CQM

+0

bien, está ahí ahora. Tuve que actualizar mi paquete de compatibilidad = \ que fue una realización muy frustrante – CQM

+0

Elija la respuesta de jona como la correcta, ya que respondió primero buena suerte –

23

Tuve este problema y no pude obtener el metodo getCurrentItem().

Terminé obteniendo el puesto del ViewPager y no del PageAdapter. El método onPageSelected(int currentPage) está obteniendo la página que se muestra actualmente.

//custom PageAdapter implementation 
mAdapter = new AwesomePagerAdapter(); 

//Our custom view pager that extends from ViewPager 
mPager = (CustomViewPager) findViewById(R.id.preview_gallery); 

mPager.setAdapter(mAdapter); 

// get the item that we should be showing from the intent 
mCurrentPage = extra.getInt("currentIndex"); 

// show the item the user picked 
mPager.setCurrentItem(mCurrentPage); 

// listen for page changes so we can track the current index 
mPager.setOnPageChangeListener(new OnPageChangeListener() { 

    public void onPageScrollStateChanged(int arg0) { 
    } 

    public void onPageScrolled(int arg0, float arg1, int arg2) { 
    } 

    public void onPageSelected(int currentPage) { 
     //currentPage is the position that is currently displayed. 
    } 

}); 

Hacerlo en el PageAdaper no funcionó para mí como yo quiero para precargar imágenes que no son visibles. La posición que se pasa instantiateItem(View collection, int position) del PageAdapter` es la posición del siguiente elemento inicializado. Esto no tiene nada que ver con el elemento que se muestra.

+0

Este es el único que funcionó. getCurrentItem() no es confiable. – Avijit

+0

funciona tan bien para mí, gracias – MBH

Cuestiones relacionadas