我使用的是ViewPager与FragmentStatePagerAdapter让一些片段之间的导航.
比方说,我有三个片段:A,B和C.ViewPager最初显示片段A,并允许您通过从右向左滑动,然后再次滑动到片段C来导航到片段B. 这允许以下导航路径:A <--> B <--> C.
我想要的是能够在片段A上从左向右滑动并让ViewPager显示片段C,即它表现为循环队列并允许 ... --> C <--> A <--> B <--> C <--> A <-- ...
我不希望片段在其他位置重复(即最终有三个以上的实例).
使用ViewPager可以实现这种包装功能吗?
可能重复:
ViewPager为循环队列/包装
我的代码中有三个片段类.FirstActivity,SecondActivity,ThirdActivity我想刷这三个活动..这三个是从Fragment类扩展而来的
public class ViewPagerFragmentActivity extends FragmentActivity {
private PagerAdapter mPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
super.setContentView(R.layout.viewpager_layout);
initialisePaging();
}
/**
* Initialize the fragments to be paged
*/
List<Fragment> fragments = new Vector<Fragment>();
ViewPager pager;
private void initialisePaging() {
fragments.add(Fragment.instantiate(this, FirstActivity.class.getName()));
fragments.add(Fragment.instantiate(this, SecondActivity.class.getName()));
fragments.add(Fragment.instantiate(this, ThirdActivity.class.getName()));
this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
pager = (ViewPager) super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
}
Run Code Online (Sandbox Code Playgroud)
}
这是我的FragmentPageAdapter类
public class MyPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> fragments;
public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments …Run Code Online (Sandbox Code Playgroud) 我用了一个PagerAdapter.我有很多元素,所以我不会在同一时间加载所有元素.我重新加载适配器,我通过新元素更改旧元素.例如,我有4个元素,当我到达最后一个元素时,我重新加载元素,并且我调用setCurentItem(1)能够在第一个位置显示viewpager.我做了很多测试.我放:
viewPager.setCurrentItem(1,false); //But not scroll, put drastically the new page.
viewPager.setCurrentItem(1);
Run Code Online (Sandbox Code Playgroud)
我试图修改onPageScrollStateChanged(int arg0),我只有3个视图,总是在中间ubicate.
if (arg0 == ViewPager.SCROLL_STATE_DRAGGING) {
if(focusedPage==2) {
//Modify adapter
viewPager.setCurrentItem(1,false);
}else if(focusedPage==0){
//Modify adapter
viewPager.setCurrentItem(1,false);
}
Run Code Online (Sandbox Code Playgroud)
我试着修改 onPageSelected(int arg0)
focusedPage=arg0;
Run Code Online (Sandbox Code Playgroud)
使用最后一个示例,我立即滚动视图,但始终位于最后一页.有谁知道我可以滑动.
谢谢