在ViewPager中动态跳过页面

时间:2013-11-08 14:29:57

标签: android android-fragments android-viewpager android-adapter fragmentstatepageradapter

我有ViewPager通过Fragment保留FragmentStatePagerAdapter s。假设寻呼机最初包含以下页面(Fragment s):

A - B - C - D

当用户滑动时,他可以从 A 移至 B B C 等 但有些情况下,当用户更改A页面上的某些选项时,他可以不移动到 B ,但 C

A - C - D

然后,用户返回 A ,修改内容并重新启用 B

A - B - C - D

我如何实现这种非常动态的行为?我无法在用户更改内容时随时添加Fragment,然后重新填充ViewPager,因为它很慢并且会中断流程。

1 个答案:

答案 0 :(得分:3)

我们也有相同的情况,我们通过维护布尔ArrayList解决了这个问题。这里的页面是片段。在Fragment上,我们编写了一个接口来更新ArrayList。这个接口是在父活动上实现的。在ViewPager的每次滑动中,我们都在检索布尔ArrayList。在ViewPager上,在setOnPageChangeListener中我们覆盖了onPageSelected。

这是一段代码:

pageIndicator.setOnPageChangeListener(new OnPageChangeListener() {

    @Override
    public void onPageSelected(int position) {
        // TODO Auto-generated method stub

        pagesPageBreakInfoList = activityContext.getBooleanList();
        currentPageNumber = position;

        if (!pagesPageBreakInfoList.get(position)) {
            if (currentPageNumber > previouspagenumber) {
                previouspagenumber = currentPageNumber;
                if (numberofSubmodule == (position + 1)) {
                    viewPager.setCurrentItem(position - 1);
                } else {
                    viewPager.setCurrentItem(position + 1);
                }
            } else {
                previouspagenumber = currentPageNumber;
                viewPager.setCurrentItem(position - 1);
            }
        } else {
            previouspagenumber = currentPageNumber;
        }
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub
    }
});