Как вы получаете текущий номер страницы ViewPager для Android?

Я хочу узнать текущую позицию страницы ViewPager. Я создаю адаптер и устанавливаю этот адаптер в ViewPager. Теперь я хочу узнать текущий номер страницы или позицию текущего представления, потому что я хочу начать некоторые дополнительные события на этой конкретной странице.

Я использовал viewPager.setCurrentItem(1); для установки первого элемента.

Есть ли аналогичный метод для получения текущей страницы?

Ответ 1

в последних пакетах вы также можете использовать

vp.getCurrentItem()

или

vp - viewPager,

pageListener = new PageListener();
vp.setOnPageChangeListener(pageListener);

вам нужно поместить прослушиватель смены страницы для вашего viewPager. На viewPager нет способа получить текущую страницу.

private int currentPage;

    private static class PageListener extends SimpleOnPageChangeListener{
            public void onPageSelected(int position) {
                Log.i(TAG, "page selected " + position);
                   currentPage = position;
        }
    }

Ответ 2

Существует метод object_of_ViewPager.getCurrentItem(), который возвращает позицию текущей просматриваемой страницы пейджера просмотра

Ответ 3

Если вам нужна только позиция, vp.getCurrentItem() предоставит ее вам, вам не нужно применять onPageChangeListener() только для этой цели.

Ответ 4

Для этой проблемы прослушиватель Onpagechange является лучшим. Но у него также будет одна небольшая ошибка, которая не будет определять время начала начала 0-й позиции. После того, как вы измените страницу, она начнет обнаруживать позицию страницы, выбранную.. Для этой проблемы я создаю самое легкое решение

1. Вы должны сохранить выбранное значение позиции, а затем использовать его...
2. Случай 1: В начале позиции всегда ноль....
   Случай 2: предположим, что если вы установите текущий элемент, значит, вы установите это значение в положение сохранения
3. Затем выполните свое действие с использованием этого в своей деятельности...

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();
        }
    });

Ответ 5

getCurrentItem(), фактически не дает правильной позиции для первой и последней страницы, я исправил ее добавление этого кода:

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;
}

Ответ 6

Вы поймете, что setOnPageChangeListener устарел, используйте addOnPageChangeListener, как показано ниже:

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) {

    }
});

Ответ 7

Нет никакого метода getCurrentItem() в viewpager.i уже проверял API

Ответ 8

Метод setOnPageChangeListener() устарел. использование addOnPageChangeListener (OnPageChangeListener).

Вы можете использовать OnPageChangeListener и получить позицию внутри метода onPageSelected(), это пример:

   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) {

        }
    });

Или просто используйте getCurrentItem(), чтобы получить реальную позицию:

viewPager.getCurrentItem();