Android PagerAdapter, получить текущую позицию

Я хочу получить текущую позицию видимого вида моего PagerAdapter

Я не видел очевидную функцию типа getPosition(), и я хочу ее.

Я хочу добавить объект в его arraylist в этом положении, но сначала мне нужно знать его

Ответ 1

Вы бы использовали:

int position = mViewPager.getCurrentItem()

Ответ 2

У меня была эта проблема и я не мог получить getCurrentItem().

В итоге я получил позицию из ViewPager, а не из PageAdapter. Метод onPageSelected(int currentPage) получает текущую отображаемую страницу.

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

});

Выполнение этого в PageAdaper не сработало для меня, поскольку я хочу предварительно загрузить изображения, которые не видны. Позиция, которая передается instantiateItem(View collection, int position) для PageAdapter`, является позицией следующего элемента, инициализированного. Это не имеет ничего общего с отображаемым элементом.

Ответ 3

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

если я напишу после этой строки

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

он покажет в logcat текущую страницу элемента во время запуска oncreate, которая всегда 0

noteice Я использовал объект для viewpager сам, а не адаптер.