2011-12-16 13 views
22

voglio ottenere la posizione corrente della vista visibile del mio PagerAdapterAndroid PagerAdapter, ottenere attuale posizione

Non ho visto una funzione evidente come getPosition() e voglio uno.

Voglio aggiungere un oggetto nella sua ArrayList in quella posizione, ma ho bisogno di sapere che prima

risposta

39

si userebbe:

int position = mViewPager.getCurrentItem() 
+1

Sto utilizzando il pacchetto di compatibilità e estende PagerAdapter, non esiste neanche il metodo getCurrentItem. Come posso farne uno? http://pastebin.com/LabjNvqL – CQM

+0

No, il oncreate viene eseguito solo all'inizio quando la pagina è 0, lo usa da qualche altra parte quando la pagina non è 0 e restituirà il numero di pagina –

+0

@CQM che stai utilizzando un VIewPager e stai impostando il suo adattatore per quella classe, mostrami la classe in cui hai un oncreate –

3

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

se scrivo dopo quella linea

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

mostrerà nel logcat la pagina corrente dell'articolo mentre la o ncreate è in esecuzione che è sempre 0

noteice ho usato l'oggetto per il viewpager e non l'adattatore.

+0

mi stai dicendo che restituisce sempre 0? Non capisco, ti dirà una posizione precisa? – CQM

+0

ok, è lì ora. Ho dovuto aggiornare il mio pacchetto di compatibilità = \ che è stata una realizzazione molto frustrante – CQM

+0

Si prega di scegliere la risposta di jona come quella corretta, come ha risposto prima buona fortuna –

23

Ho avuto questo problema e non ho potuto ottenere il metodo getCurrentItem().

Ho finito per ottenere la posizione dal ViewPager e non dal PageAdapter. Il metodo onPageSelected(int currentPage) sta ottenendo la pagina attualmente visualizzata.

//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. 
    } 

}); 

Farlo nel PageAdaper non ha funzionato per me, come io voglio precaricare le immagini che non sono visibili. La posizione passata instantiateItem(View collection, int position) di PageAdapter` è la posizione dell'elemento successivo inizializzato. Questo non ha nulla a che fare con l'oggetto che viene visualizzato.

+0

Questo è l'unico che ha funzionato. getCurrentItem() non è affidabile. – Avijit

+0

funziona così bene per me, grazie – MBH

Problemi correlati