我想实现viewpager左右滑动,下面代码当size小于4时,向左滑动会报错,即无法destroy。网上说至少3张图,为何我3张也不行,只有4张或以上才行,求解答
private final class AdPageAdapter extends PagerAdapter { private List<View> views = null; /** * 初始化数据源, 即View数组 */ public AdPageAdapter(List<View> views) { this.views = views; } /** * 从ViewPager中删除集合中对应索引的View对象 */ @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView(views.get(position%views.size())); } /** * 获取ViewPager的个数 */ @Override public int getCount() { return Integer.MAX_VALUE; } /** * 从View集合中获取对应索引的元素, 并添加到ViewPager中 */ @Override public Object instantiateItem(View container, int position) { ((ViewPager) container).addView(views.get(position%views.size()), 0); return views.get(position%views.size()); } /** * 是否将显示的ViewPager页面与instantiateItem返回的对象进行关联 * 这个方法是必须实现的 */ @Override public boolean isViewFromObject(View view, Object object) { return view == object; } }
getCount为何是Integer. MAX_VALUE
如果设为views.size()就不能循环滑动了,设成这样能造成循环滑动的假象请问楼主解决了吗?我也有同样的问题!今天才发现这个问题所在,备注一下:ViewPager默认情况下,比如有1,2,3,4页面,从2滑到3时,是先执行1的destroy,再执行4的 instantiateItem,然而 从3滑到2时,是先执行1的 instantiateItem,再执行4的 destroy,所以当只有3个页面时,想重用,后一种滑动时,即手指左滑,会报view被添加过的错请问LZ最后解决了这个问题吗?是把views的长度增加吗?版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。