Android PagerAdapter, get current position
I had this problem and could not get the getCurrentItem()
methode.
I ended up getting the position from the ViewPager
and not from the PageAdapter
. The onPageSelected(int currentPage)
methode is getting the currently displayed page.
//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.
}
});
Doing it in the PageAdaper
didn't work for me as I want to preload images that are not visible. The position that is passed instantiateItem(View collection, int position)
of the PageAdapter` is the position of the next item initialized. This has nothing to do with the item that is displayed.
You would use:
int position = mViewPager.getCurrentItem()
https://github.com/Shereef/ViewPagerPlusExpandableList/blob/master/src/net/shereef/vewpagerplusexpandablelistexample/ViewPagerPlusExpandableListActivity.java#L204
if i write after that line
Log.i("pager",myPager.getCurrentItem()+"");
it will show in the logcat the current item page while the oncreate is being run which is always 0
noteice i have used the object for the viewpager it self not the adapter.