android ViewPager 左右循环滑动

libing923 发布于 2014/04/18 20:51
阅读 2K+
收藏 0

我想实现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;  
        }  
    }



加载中
0
Romen
Romen

getCount为何是Integer. MAX_VALUE

libing923
libing923
如果设为views.size()就不能循环滑动了,设成这样能造成循环滑动的假象
0
m
marryLiu
请问楼主解决了吗? 我也有同样的问题!
0
libing923
libing923
今天才发现这个问题所在,备注一下:ViewPager 默认情况下,比如 有1,2,3,4页面,从2滑到3时,是先执行1的destroy,再执行4的instantiateItem,然而从3滑到2时,是先执行1的instantiateItem,再执行4的destroy,所以当只有3个页面时,想重用,后一种滑动时,即手指左滑,会报view被添加过的错
亚豆的棒棒糖
亚豆的棒棒糖
请问LZ最后解决了这个问题吗?是把views的长度增加吗?
返回顶部
顶部