问题:
ViewPager 左右滑动到最后一页的时候不能继续滑动了,设置自动滑动的时候,到最后一页时又会出现那种从最后一页切换到第一页的一个跳转动作,用户体验很不好,我们需要的是能够滑动到最后一页的时候能够继续滑动重新从第一页开始加载,设置自动滑动的时候也能够很流畅的从最后一页到第一页的加载;
解决办法:
ViewPager之所以会出现以上问题,主要是加载的页面数的限制,也就是ViewPager的长度的限制,所以我们只需要修改ViewPager的长度即可,修改getCount方法:
/**
*callbacks
*/
@Override
public int getCount()
{
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
这样就把ViewPager的长度设置成整形最大值了,用户再怎么用也不可能滑动这么长吧;
设置了长度后需要处理加载页面和销毁页面了,因为ViewPager有这么长,我不能每一页都给它填充数据,何况我们的数据还是有限的,所以只能对加载的数据进行处理,处理办法就是用当前页码对实际需要页面的长度求余:
/**
*callbacks
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object)
{
// TODO Auto-generated method stub
int tempPos = position%indicatorItemViews.size();
container.removeView(indicatorItemViews.get(tempPos));
}
/**
*callbacks
*/
@Override
public Object instantiateItem(ViewGroup container, int position)
{
// TODO Auto-generated method stub
int tempPos = position%indicatorItemViews.size();
View view = indicatorItemViews.get(tempPos);
container.addView(view, 0);
return view;
}
这样就可以保证页面能够一直往下切换,解决了上面两个问题