您的位置:首页 > 移动开发 > Android开发

android ViewPager+FragmentStatePagerAdapter无限循环FragmentStatePagerAdapter

2015-06-03 19:28 507 查看
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">使用ViewPager 和FragmentStatePagerAdapter做翻页效果的话,当从最后一页换到第一页的时候,动画效果会从最后一页倒滑到第一页。</span>


下面介绍一种方法,可以让ViewPager无限的翻页。

代码如下:

<pre name="code" class="html">public class MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter{

public MyFragmentStatePagerAdapter(FragmentManager fm) {
super(fm);
// TODO......
}

@Override
public Fragment getItem(int index) {
// TODO......
return new Fragment();
}

@Override
public int getCount() {
return Integer.MAX_VALUE;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container,position % mRealCount);
}

@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container,position % <span style="font-family: Arial, Helvetica, sans-serif;">mRealCount</span><span style="font-family: Arial, Helvetica, sans-serif;">, object);</span>
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position % mRealCount, object);
}
}


主要注意这些:

1、getConunt的时候,返回Integer.MAX_VALUE。

2、后面的三个函数,需要把position的值做转换,转成实际的索引。

3、和平常使用一下,getItem返回一个Fragment,通常需要在这里为Fragment设置数据。

接下来的事情就很简单了,把这个Adapter设置给ViewPager, 并调用ViewPager.setCurrentItem(Integer.MAX_VALUE>>1);

这样就可以左右无限滑动 了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: