在viewPager中使用set ItemChange Listener

时间:2011-12-11 13:54:37

标签: android android-viewpager

我使用ViewPager,想要获取下一个项目,以及向左和向右滚动页面时的上一个项目。我使用了像this example这样的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 个答案:

答案 0 :(得分:3)

我不知道你究竟想要实现什么目标,但我认为总是使用值{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();
            }
        }
    });