创建一个向一个方向滚动的无限ViewPager

时间:2013-03-11 06:39:27

标签: android android-viewpager

我是Android编程的新手,这是我在这个网站上的第一个问题。我花了很多时间寻找这个问题,但没有找到适合我案例的答案。

我在ViewPager中有两个页面,一个用于当前页面,一个用于下一页面。当第二个片段显示时,我将其索引设置为0,删除第一个片段并创建一个新片段作为第二个片段的替换。这是我的代码。

mPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int pageSelected) {
        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            if (position  == 1) {
                currentQuestFr = nextQuestFr;
                nextQuestFr = newQuest();
                mPager.setCurrentItem(0, false);
                mPagerAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

和适配器

private class QuestPagerAdapter extends FragmentStatePagerAdapter {

    public QuestPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        if (position == 0) return currentQuestFr;
        else return nextQuestFr;
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }

    @Override
    public int getItemPosition(Object object)
    {
        return POSITION_NONE;
    }
}

代码效果很好,但notifyDataSetChanged()似乎刷新了我的视图而不需要它。它让用户有点恼火。有没有办法刷新适配器而不重绘视图,或其他方式达到相同的目的? 非常感谢

1 个答案:

答案 0 :(得分:0)

您是否希望它以最初应加载所有数据然后在某些事件上手动重绘视图的方式工作?然后你可以使用 的 mPager.setOffscreenPageLimit(n)的 其中n是mPager中的页数。这将在加载时绘制所有页面。