记android ViewPager实现轮播图的无限滚动笔记
来源:互联网 发布:淘宝淘友在哪里看 编辑:程序博客网 时间:2024/06/01 09:49
遇到的问题
在做广告无限轮播图的时候用手去主动向右滑动的时候发现出现空白的视图
解决办法
在重写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; }}
0 0
- 记android ViewPager实现轮播图的无限滚动笔记
- android简单实现无限滚动,自动滚动的ViewPager
- android ViewPager无限滚动、轮播图
- Android ViewPager的无限循环与自动滚动实现
- 【Android】ViewPager实现无限循环滚动
- android viewpager实现无限循环自动滚动
- Android实现ViewPager无限循环滚动回绕
- Android无限循环滚动ViewPager
- Android 无限循环且支持自动滚动的ViewPager
- Android 一个无限循环滚动的卡片式ViewPager
- Android 无限轮播ViewPager的实现
- android中使用ViewPager实现无限轮播图
- Android 实现无限滚动的ScrollView
- viewpager实现无限循环滚动幻灯片
- ViewPager实现无限轮播图
- 无限循环的轮播图ViewPager实现
- android 实现无限循环viewpager
- Android中级:轮播图(二):ViewPager实现indicator的滚动
- Matlab绘图
- 在PHP的Yii框架中使用行为Behaviors的方法
- Retrofit+RxJava 完美封装
- centos 6.5下安装pomelo(1) 升级python至2.7.12
- CentOS Linux使用crontab运行定时任务详解
- 记android ViewPager实现轮播图的无限滚动笔记
- Ubuntu16.04 配置tensorflow gpu版本
- .gitignore文件不起作用
- Elasticsearch的特性
- MyBatis逆向工程(generatorsqlmapcustom)
- 动态分区的代码实现
- GUN Make 环境配置
- java中的动态加载类与静态加载
- c语言 int与byte[]互相转换