ListView的另一种可读性更强的ViewHolder模式写法
常见的写法是这样的:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if( convertView == null ) {
convertView = getLayoutInflater().inflate( R.layout.line, null );
ImageView imageView = (ImageView) convertView.findViewById( R.id.imageView );
TextView textView = (TextView) convertView.findViewById( R.id.textView );
viewHolder = new ViewHolder();
viewHolder.imageView = imageView;
viewHolder.textView = textView;
convertView.setTag( viewHolder );
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.imageView.setImageResource( R.drawable.ic_launcher );
viewHolder.textView.setText( arr[ position ] + "");
return convertView;
}
但是可读性不好,convertView怎么会当成getView的返回值呢?所以以下是一种更好的写法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if( convertView == null ) {
View view = getLayoutInflater().inflate( R.layout.line, null );
ImageView imageView = (ImageView) view.findViewById( R.id.imageView );
TextView textView = (TextView) view.findViewById( R.id.textView );
viewHolder = new ViewHolder();
viewHolder.imageView = imageView;
viewHolder.textView = textView;
view.setTag( viewHolder );
viewHolder.imageView.setImageResource( R.drawable.ic_launcher );
viewHolder.textView.setText( arr[ position ] + "");
return view;
} else {
viewHolder = (ViewHolder) convertView.getTag();
viewHolder.imageView.setImageResource( R.drawable.ic_launcher );
viewHolder.textView.setText( arr[ position ] + "");
return convertView;
}
}
因为convertView只是指向一块内存区域,它保存着已显示过的View。只有ListView没超出屏幕时,convertView才为空。如果超出了,convertView就有东西了。
附:ViewHolder如下:
class ViewHolder {
TextView textView;
ImageView imageView;
}
ListView的另一种可读性更强的ViewHolder模式写法的更多相关文章
- web前端开发培训和自学 哪种选择更适合你
web前端相对于其他软件开发是比较容易入门的,但是如果深入学习就比较困难了,这门技能需要从业人员掌握一定的设计.代码.交互技能和一些SEO技能,容易入门还涉及这么多知识和技能,那学习web前端开发到底 ...
- Java四种引用包括强引用,软引用,弱引用,虚引用。
Java四种引用包括强引用,软引用,弱引用,虚引用. 强引用: 只要引用存在,垃圾回收器永远不会回收Object obj = new Object();//可直接通过obj取得对应的对象 如obj.e ...
- RAID5和RAID10,哪种RAID更适合你(上)
[IT168 专稿]存储是目前IT产业发展的一大热点,而RAID技术是构造高性能.海量存储的基础技术,也是构建网络存储的基础技术.专家认为,磁盘阵列的性能优势得益于磁盘运行的并行性,提高设备运行并行度 ...
- 阅读:RAID5和RAID10,哪种RAID更适合你
阅读:RAID5和RAID10,哪种RAID更适合你-------------------------------------------2013/10/06 存储是目前IT产业发展的一大热点,而RA ...
- 构建可读性更高的 ASP.NET Core 路由
原文:构建可读性更高的 ASP.NET Core 路由 一.前言 不知你在平时上网时有没有注意到,绝大多数网站的 URL 地址都是小写的英文字母,而我们使用 .NET/.NET Core MVC 开发 ...
- 更强的 JsonPath 兼容性及性能测试
更强的 JsonPath 兼容性及性能测试 最近给自己的json框架snack3添加了json path支持.搞好之后,找了两个市面上流行框架比较性测试,以助自己改进框架的性能和兼容性. 测了一圈之后 ...
- 转载:RAID5和RAID10,哪种RAID更适合你
转自 http://storage.it168.com/h/2007-06-28/200706281204046_3.shtml 存储是目前IT产业发展的一大热点,而RAID技术是构造高性能.海量存储 ...
- SOLOv 2:实例分割(动态、更快、更强)
SOLOv 2:实例分割(动态.更快.更强) SOLOv2: Dynamic, Faster and Stronger 论文链接: https://arxiv.org/pdf/2003.10152. ...
- Java中四种引用:强、软、弱、虚引用
这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...
随机推荐
- seleniumIDE的实践
浏览器:1.Firefox setup35.0.12.安装完成后设置菜单栏---安装完浏览器,鼠标定位在浏览器的状态栏,然后点击鼠标右键,点击勾选菜单栏,这时候就有菜单栏出现了 3.关闭浏览器自动更新 ...
- 百度BAE部署微信开发环境
这里会弹出一个SVN的账户和密码,这个账户和密码就是你百度的账户和密码 将项目导出WAR包到SVN的客户端目录里面 然后右键SVN Commit提交代码 部署列表有新版本 快捷发布 tocken认证失 ...
- suse11 sp4(虚拟机) 安装程序时报错 找不到iso
一个可能原因是iso掉了.我用的virtualbox安装的suse,支持不是很好,suse启动后,因为驱动问题强制umount了iso,所以掉了.重启后,不要去动virtualbox插件问题,插件错误 ...
- cdoj第13th校赛初赛H - Hug the princess
http://acm.uestc.edu.cn/#/contest/show/54 H - Hug the princess Time Limit: 3000/1000MS (Java/Others) ...
- 70. Climbing Stairs (Array; DP)
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- Linux dkpg命令
一.简介 dpkg 是Debian Package 的简写,是Debian系列系统下的一个软件安装.更新及移除工具. 二.常用指令 1.查询功能 查看软件包信息: dpkg -info xxx.deb ...
- shell 脚本 测试webApp
vim **.sh文件 开头:#!/bin/bash ////////// copy cURL //因为这样copy的url就是一个命令(进入chrome的开发者工具里面,点network,找到刚刚访 ...
- 80% UI 初学者走过的弯路,你走了几条?
关于UI 对于初学UI设计的人而言,可能对UI具体是做什么,或者自己是否能顺利转行胜任这样的岗位存在一定的顾虑,今天我们就来重点说说UI是做什么的,以及学UI到有哪些需要避免的弯路. 1.UI设计是做 ...
- Java数据结构和算法(一)树
Java数据结构和算法(一)树 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 前面讲到的链表.栈和队列都是一对一的线性结构, ...
- asp.net请求编译流程图(其实就是说asp.netd代码是如何转成中间代码IL然后交给cpu执行的)