我有一个 ViewPager
,它通过 FragmentStatePagerAdapter
保存 Fragment
。假设寻呼机最初包含以下页面( fragment
):
A - B - C - D
当用户滑动时,他可以从A
移动到B
, B
到 C
等。
但是有些情况下,当用户在A
页面上更改了一些选项,他可以不移动到B
,而是移动到 C
:
A - C - D
然后用户返回到 A
,修改一些内容并重新启用 B
:
A - B - C - D
我怎样才能实现这种非常动态的行为?当用户更改某些内容然后重新填充 ViewPager
时,我无法在任何时候添加 Fragment
,因为它很慢并且会中断流程。
最佳答案
我们也有同样的情况,我们通过维护一个boolean ArrayList来解决这个问题。这里的页面是 fragment 。在 Fragment 上,我们编写了一个接口(interface)来更新 ArrayList。这个接口(interface)是在父 Activity 上实现的。在 ViewPager 的每次滑动中,我们都在检索 bool 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
}
});
关于android - 在 ViewPager 中动态跳过页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19861445/