高仿APP——元贝驾考(三)ListView多ItemView
2017-07-11 09:37
134 查看
先预览一下效果
图中 图3、图4 是一个item,因为图片太长,屏幕显示放不下
从上面几张图片可以看得出来,大致分为2种情况:单张图和多张图(单张图是imageView宽高包裹,多张图时imageView宽高固定)
有的同学心想,这有什么难的,直接多写几个itemView,然后getItemViewType判断一下不就行了吗?
其实,图片有可能是1张、2张、3张。。。。最多9张,你是想写9个布局文件吗?
看一下我是怎么实现的吧
不是最多9张图吗,平均分配也就是每行3张图,写了3个空的LinearLayout,线性方向是水平方向
再来看一下Adapter
怎么样,很简单了吧
有什么问题可以在评论留言
图中 图3、图4 是一个item,因为图片太长,屏幕显示放不下
从上面几张图片可以看得出来,大致分为2种情况:单张图和多张图(单张图是imageView宽高包裹,多张图时imageView宽高固定)
有的同学心想,这有什么难的,直接多写几个itemView,然后getItemViewType判断一下不就行了吗?
其实,图片有可能是1张、2张、3张。。。。最多9张,你是想写9个布局文件吗?
看一下我是怎么实现的吧
不是最多9张图吗,平均分配也就是每行3张图,写了3个空的LinearLayout,线性方向是水平方向
再来看一下Adapter
int bitmapNum = 0;//图片的数量
if(listBeen.get(position).bitmaps != null){ bitmapNum = listBeen.get(position).bitmaps.size(); } if(bitmapNum == 0){ viewHolder.layout1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,20)); }else if(bitmapNum == 1){ final ImageView imageView = new ImageView(context); imageView.setAdjustViewBounds(true); imageView.setScaleType(ImageView.ScaleType.CENTER); viewHolder.layout1.addView(imageView); LinearLayout.LayoutParams imageViewParams = (LinearLayout.LayoutParams) imageView.getLayoutParams(); imageViewParams.width = LinearLayout.LayoutParams.WRAP_CONTENT; imageViewParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; imageView.setLayoutParams(imageViewParams); Glide.with(context).load(listBeen.get(position).bitmaps.get(0)).into(imageView); viewHolder.layout1.invalidate(); }else if(bitmapNum > 1){ for(int i = 0 ; i < bitmapNum ; i ++){ ImageView imageView = new ImageView(context); if(i <= 2){ viewHolder.layout1.addView(imageView); }else if(i > 2 && i <= 5){ viewHolder.layout2.addView(imageView); }else if(i > 5 && i <= 8){ viewHolder.layout3.addView(imageView); } LinearLayout.LayoutParams imageViewParams = (LinearLayout.LayoutParams) imageView.getLayoutParams(); imageViewParams.width = BaseApplication.WINDOW_WIDTH / 100 * 25; imageViewParams.height = BaseApplication.WINDOW_WIDTH / 100 * 25; imageViewParams.rightMargin = 15; imageViewParams.topMargin = 15; imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setLayoutParams(imageViewParams); Glide.with(context).load(listBeen.get(position).bitmaps.get(i)).into(imageView); viewHolder.layout1.invalidate(); viewHolder.layout2.invalidate(); viewHolder.layout3.invalidate(); } }
怎么样,很简单了吧
有什么问题可以在评论留言
相关文章推荐
- 高仿APP——元贝驾考
- 高仿APP——元贝驾考(一)FragmentUtils
- 高仿App--元贝驾考(二)Dialog工具类
- 高仿APP——元贝驾考(三)滑动关闭Activity
- App列表之圆角ListView
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(十三)关于ListView的优化总结
- Android学习系列(16)--App列表之圆角ListView
- 一款高仿微信的app供大家参考
- 【android】ListView 中添加按钮,动态删除添加ItemView的操作
- App列表之拖拽ListView(下)
- Listview滑动时不加载数据,停下来时加载数据,让App更优
- Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现
- 给listview添加动画效果,让你的app更绚
- App列表之分组ListView
- 高仿微信APP实战(一)-Actionbar的制作与应用
- 高仿微信app实战(二)- 自定义View实现底部导航栏
- Android 高仿豌豆荚 一键安装app 功能
- 微信封杀875个“高仿”小程序;马云求2018年新书单;全球App下载超过1750亿次丨价值早报
- 实例讲解Android app开发中ListView的基本使用及优化
- Android学习系列(15)--App列表之游标ListView(索引ListView)