我有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
,因为它很慢并且会中断流程。
答案 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
}
});