记android ViewPager实现轮播图的无限滚动笔记
2016-11-26 10:27
1061 查看
遇到的问题
在做广告无限轮播图的时候用手去主动向右滑动的时候发现出现空白的视图
解决办法
在重写PagerAdapter的destroyItem(View arg0, int arg1, Object arg2)时不要在这里面去调用((ViewPager) arg0).removeView(list.get(position));
原因是在做无限循环时,我们需要getCount()设置为Integer.MAX_VALUE很大的值,且在重写instantiateItem(View arg0, final int arg1)方法时,我们需要判断当前的视图是否已经有父控件包住了,如果有则在这里从父亲中移除。
以下是整个PagerAdapter的重写代码
在做广告无限轮播图的时候用手去主动向右滑动的时候发现出现空白的视图
解决办法
在重写PagerAdapter的destroyItem(View arg0, int arg1, Object arg2)时不要在这里面去调用((ViewPager) arg0).removeView(list.get(position));
原因是在做无限循环时,我们需要getCount()设置为Integer.MAX_VALUE很大的值,且在重写instantiateItem(View arg0, final int arg1)方法时,我们需要判断当前的视图是否已经有父控件包住了,如果有则在这里从父亲中移除。
以下是整个PagerAdapter的重写代码
public class AdBannerAdapter extends PagerAdapter { //所有的View集合 private List<View> list; //点击回调事件 private AdBannerView.OnImageClick onImageClick; public AdBannerAdapter(Context context, List<View> list) { this.list = list; } //设置无限 循环 @Override public int getCount() { return Integer.MAX_E; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } public View instantiateItem(View arg0, final int arg1) { if (list.size() > 0) { final int position = arg1 % list.size()<0?list.size()+arg1:arg1 % list.size(); //如果已经被viewPager包含,则从中移除,否则会报错 if (list.get(position).getParent() != null){ ViewGroup group = (ViewGroup) list.get(position).getParent(); group.removeView(list.get(position)); } //添加到ViewPager ((ViewPager) arg0).addView(list.get(position)); //设置点击事件 list.get(arg1 % list.size()).setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if (onImageClick != null) { onImageClick.onImageClick(position); } } }); return list.get(position); } return null; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { //因为上面已经把view从ViewPager中移除,这里不要再次移除,否则在手动右滑的时候会出现空白的视图 // final int position = arg1 % list.size(); // ((ViewPager) arg0).removeView(list.get(position)); } public AdBannerView.OnImageClick getOnImageClick() { return onImageClick; } public void setOnImageClick(AdBannerView.OnImageClick onImageClick) { this.onImageClick = onImageClick; } }
相关文章推荐
- 【Android】ViewPager实现无限循环滚动
- Android ViewPager实现广告无限轮播
- Android ViewPager从网络获取图片实现无限轮播
- android 自定义无限循环播放的viewPager。轮播ViewPager。实现循环播放 广告,主题内容,活动,新闻内容时。
- Android使用ViewPager实现无限循环滑动及轮播(附源码)
- Android使用ViewPager实现无限循环滑动及轮播(附源码)
- android viewpager实现无限循环自动滚动
- Android 中ViewPager 实现banner无限轮播效果
- Android viewpager实现无限循环轮播
- android自定义控件-AutoScrollViewpager(无限滚动轮播控件)
- android ViewPager无限滚动、轮播图
- Android中级:轮播图(二):ViewPager实现indicator的滚动
- android中使用ViewPager实现无限轮播图
- android简单实现无限滚动,自动滚动的ViewPager
- Android简单实现无限滚动自动滚动的ViewPager
- ViewPager:真正实现图片的无限轮播、自定义指示点和条目点击事件(支持长按暂停滚动)
- android ViewPager实现无限轮播和设置监听事件
- Android 无限轮播ViewPager的实现
- Android ViewPager实现无限循环轮播广告位Banner效果
- Android使用ViewPager实现无限循环滑动及轮播(附源代码)