【Android】论ViewHolder存在的意义
2019独角兽企业重金招聘Python工程师标准>>>
第一次学ListView基本是半懂,adapter也是看着别人的代码打一遍硬生生记下来的,以至于一直不怎么懂ViewHolder的作用。
到后来学有小成后,自作聪明的放弃了ViewHolder的写法,改成下面这种格式:
if (convertView==null) {convertView = inflater.inflate(R.layout.item_table, null);
}
TextView tv1 = (TextView) convertView.findViewById(R.id.tv_1);
TextView tv2 = (TextView) convertView.findViewById(R.id.tv_2);
tv1.setText("test");
...
return convertView;
当然,运行效果是一样的,但因为每次都用了findViewById,效率肯定会有些影响。
所以谷歌才会鼓励ViewHolder的写法:
ViewHolder holder = null;
if (convertView==null) {convertView = inflater.inflate(R.layout.item_table, null);holder.tv1 = (TextView) convertView.findViewById(R.id.tv_1);holder.tv2 = (TextView) convertView.findViewById(R.id.tv_2);
}else {holder = (ViewHolder) convertView.getTag();
}
holder.tv1.setText("test");
...
return convertView;
这种写法的好处显而易见,将convertView中的View以ViewHolder的实例存入tag中复用,从而减少findViewById的调用,避免了资源浪费。(findViewById每次都会创建一个新的实例)
虽然ViewHolder能提高执行效率,但实际运行的效果并无太大差别,并且每个Adapter都要写多一个ViewHolder类,烦的要死,这也是导致我放弃ViewHolder的原因。
于是,下面推荐大家看看ViewHolder的另一种写法:
http://my.oschina.net/jack1900/blog/289164
用这个ViewHolder无需每次都写多一个类,只需这样:
if (convertView==null) {convertView = inflater.inflate(R.layout.item_table, null);
}
TextView tv1 = ViewHolder.get(convertView, R.id.tv_1);
TextView tv2 = ViewHolder.get(convertView, R.id.tv_2);
tv1.setText("test");
...
return convertView;
真心好用!推荐大家也用这个~~
转载于:https://my.oschina.net/u/816576/blog/414479
【Android】论ViewHolder存在的意义相关推荐
- Android listview viewholder
2019独角兽企业重金招聘Python工程师标准>>> Android ListView ViewHolder 利用adapter中的getView的 contentView 的复用 ...
- 9.Android 万能ViewHolder
9.Android 万能ViewHolder Android 万能ViewHolder ViewHolder的作用 万能ViewHolder的原理 在你的BaseListAdapter中可以这么实现 ...
- Android之ViewHolder用法
先声明一下ViewHolder在Android自定义的适配器中使用.目的:优化资源,节省空间,避免重复绘制view而引起的不必要的内存损耗. 我自己以前的写法: [html] view plainco ...
- Android: RecyclerView.ViewHolder、Adapter
1.简介 用户滑动屏幕切换视图时,上一个视图会回收利用,RecyclerView所做的就是回收再利用,循环往复. ViewHolder ViewHolder的主要任务:容纳View视图. Adap ...
- Android 整体设计及背后意义
目录 1. Android设计的现实意义 1.1 发展的前提:硬件抽象 1.2 能力的枢纽:组件化 1.3 应用的基础-接口层 2. 对于我们的象征意义和实践 3. 小结 阿里妹导读:现实工作中经常可 ...
- 深度 | Android 整体设计及背后意义
阿里妹导读:现实工作中经常可以听到这样的说法:框架的升级带来协议性能的提升.编程模式的变革带来业务的飞跃...... 姑且不论这些表述是否有问题,实际上如果系统地看待事物整体,可能会有不一样的发现.以 ...
- android的介绍及研究意义,基于Android的手机游戏研究与实现
摘要: 近年来,随着科技的迅速发展以及人们生活水平的日益提高,智能手机的使用也越来越广泛.在众多智能手机操作系统中,谷歌为移动平台精心打造的Android操作系统因它开源的优势已首当其冲的占领了手机市 ...
- Android的viewHolder模式
深入浅出(这部分总结的非常好) ListView之BaseAdapter的基本使用以及ViewHolder模式. 话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用 ...
- android viewholder静态,android – 静态ViewHolder并在使用RecyclerView时获取上下文
我正在尝试使用回收器视图并处理单击事件.我已经阅读了在回收站视图项上处理onClick事件的各种方法,例如: >在视图持有者类本身内定义单击侦听器. >在onCreateViewHolde ...
最新文章
- Python图像处理,替代PS做好效果图!
- 用户管理和su,id 命令
- 超详细百家大厂面试资料,免费送!
- springboot 异步mysql_spring boot 使用@Async实现异步调用方法
- 选择湿度传感器注意的若干问题
- 深入LINQ | 揭开IQueryable的面纱
- 工作感想:浅论Java教学工作
- 如何利用ansible callback插件对执行结果进行解析
- 推荐几款好用实用的宝藏软件。记得收藏
- 激活函数(激励函数)理解总结
- js特效--移动的广告窗
- 获取汉字拼音首字母方法
- PM应具备的规划技巧-顾客价值管理
- 项目管理知识体系指南(五)项目时间管理
- (Tiled官方文档翻译)第四节:对象的编辑和使用
- 光学变焦----景深=景深远界-景深近界
- 华为OD机试(A、B卷)、机考,200分的题目整理如下,冲满分必备
- StringBuffer换行
- PV、UV、IP理解
- java分布式实现图片上传到图片服务器