在ViewPager中动态跳过页面 [英] Dynamically skip pages in ViewPager

本文介绍了在ViewPager中动态跳过页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到了一个ViewPager,它通过FragmentStatePagerAdapter持有Fragment s.假设寻呼机最初拥有以下页面(Fragment s):

I got a ViewPager which holds Fragments via FragmentStatePagerAdapter. Let's say the pager initially holds the following pages (Fragments):

A - B - C - D

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

When the user swipes, he can move from A to B, B to C etc. But there are cases when the user changes some options on the A page, he can move not to B, but C:

A - C - D

然后用户返回 A ,进行修改并重新启用 B :

Then the user goes back to A, modifies something and that re-enables B:

A - B - C - D

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

How can i achieve this very dynamic behavior? I cannot add Fragments any time when the user changes something and then re-populate the ViewPager, because it's slow and breaks the flow.

推荐答案

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

We too had the same situation, and we solved this issue by maintaining a boolean ArrayList.The pages here are fragments. On the Fragment, we had written an interface to update the ArrayList.This interface is implemented on the parent activity.On every swipe of the ViewPager we are retrieving the boolean ArrayList. On ViewPager, in setOnPageChangeListener we overrided the 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
    }
});

这篇关于在ViewPager中动态跳过页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆