Используйте setonItemChange Listner в viewPager - PullRequest
0 голосов
/ 11 декабря 2011

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

Это мой код:

    @Override
        public void onPageSelected(int position) {
            mFocusedPage = position;
        }

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

        }

        @Override
        public void onPageScrollStateChanged(int state) {

            if (state ==ViewPager.SCROLL_STATE_IDLE) {
                if (mFocusedPage == 0) {
                    clientMeterString="firstitem:number1";
                } else if (mFocusedPage == 2) {
                    clientMeterString="seconditem:number2";
                }

                awesomePager.setCurrentItem(1, false);
            }
        }
    }
);

Кто-нибудь может помочь?

1 Ответ

3 голосов
/ 15 декабря 2011

Я не знаю, чего именно вы пытаетесь достичь, но я думаю, что вызов setCurrentItem всегда со значением 1 - это то, что заставляет вас видеть одно и то же содержимое.

Для получения предыдущегостраница (та, которая скрыта), вы должны использовать SCROLL_STATE_DRAGGING, например:

   awesomePager.setOnPageChangeListener(new OnPageChangeListener() {
        private int prevPage = -1;
        @Override
        public void onPageSelected(int position) {
            // after page is selected do something with your prevPage 
            // eg: compare to "position" to check if it's from the left or right
        }

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

        @Override
        public void onPageScrollStateChanged(int arg0) {
            if (arg0 == ViewPager.SCROLL_STATE_DRAGGING) {
                prevPage = awesomePager.getCurrentItem();
            }
        }
    });
...