在ViewPager中动态跳过页面 [英] Dynamically skip pages in ViewPager
问题描述
我得到了一个ViewPager
,它通过FragmentStatePagerAdapter
持有Fragment
s.假设寻呼机最初拥有以下页面(Fragment
s):
I got a ViewPager
which holds Fragment
s via FragmentStatePagerAdapter
. Let's say the pager initially holds the following pages (Fragment
s):
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 Fragment
s 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屋!