高仿APP——元贝驾考(三)ListView多ItemView
来源:互联网 发布:iina for mac下载 编辑:程序博客网 时间:2024/06/16 16:01
先预览一下效果
图中 图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(); }}
怎么样,很简单了吧
有什么问题可以在评论留言
阅读全文
1 0
- 高仿APP——元贝驾考(三)ListView多ItemView
- 高仿APP——元贝驾考(三)滑动关闭Activity
- 高仿APP——元贝驾考
- 高仿APP——元贝驾考(一)FragmentUtils
- 关于Android ListView 多ItemView的问题
- 高仿App--元贝驾考(二)Dialog工具类
- 高仿- 萌聚 app。
- ListView自定义itemView
- 仿ListView源码添加ReCycleView头部和底部ItemView的功能
- java应用——高仿XP画板(三:加上重绘功能)
- Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现
- 酷狗app高仿系列
- swift -高仿单糖app
- iOS 高仿<爱鲜蜂>APP
- 高仿新闻教程——点击条目更新listview(8)
- listview侧滑菜单的实现——高仿QQ联系人列表
- listview侧滑菜单的实现——高仿QQ联系人列表
- Android——今日头条APP——高仿——ZYFNewsCTZF
- 23种设计模式(5)-原型模式
- Oracle报错java.sql.SQLSyntaxErrorException: ORA-01722: invalid number解决方案
- windows下xlwings 的安装
- String内存的分配问题
- 跳出iframe到顶级窗口
- 高仿APP——元贝驾考(三)ListView多ItemView
- WebStorm里面配置运行React Native的方案
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法
- ESP8266 Smartconfig一键配置 NodeMCU
- 鲜为人知的编程真相
- MySQL备份
- JAVA 常用开发快捷键大全
- lamp+rsyslog+loganalyzer实现日志服务器
- 前端面试题一