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存在的意义相关推荐

  1. Android listview viewholder

    2019独角兽企业重金招聘Python工程师标准>>> Android ListView ViewHolder 利用adapter中的getView的 contentView 的复用 ...

  2. 9.Android 万能ViewHolder

    9.Android 万能ViewHolder Android 万能ViewHolder ViewHolder的作用 万能ViewHolder的原理 在你的BaseListAdapter中可以这么实现 ...

  3. Android之ViewHolder用法

    先声明一下ViewHolder在Android自定义的适配器中使用.目的:优化资源,节省空间,避免重复绘制view而引起的不必要的内存损耗. 我自己以前的写法: [html] view plainco ...

  4. Android: RecyclerView.ViewHolder、Adapter

    1.简介  用户滑动屏幕切换视图时,上一个视图会回收利用,RecyclerView所做的就是回收再利用,循环往复. ViewHolder  ViewHolder的主要任务:容纳View视图. Adap ...

  5. Android 整体设计及背后意义

    目录 1. Android设计的现实意义 1.1 发展的前提:硬件抽象 1.2 能力的枢纽:组件化 1.3 应用的基础-接口层 2. 对于我们的象征意义和实践 3. 小结 阿里妹导读:现实工作中经常可 ...

  6. 深度 | Android 整体设计及背后意义

    阿里妹导读:现实工作中经常可以听到这样的说法:框架的升级带来协议性能的提升.编程模式的变革带来业务的飞跃...... 姑且不论这些表述是否有问题,实际上如果系统地看待事物整体,可能会有不一样的发现.以 ...

  7. android的介绍及研究意义,基于Android的手机游戏研究与实现

    摘要: 近年来,随着科技的迅速发展以及人们生活水平的日益提高,智能手机的使用也越来越广泛.在众多智能手机操作系统中,谷歌为移动平台精心打造的Android操作系统因它开源的优势已首当其冲的占领了手机市 ...

  8. Android的viewHolder模式

    深入浅出(这部分总结的非常好) ListView之BaseAdapter的基本使用以及ViewHolder模式. 话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用 ...

  9. android viewholder静态,android – 静态ViewHolder并在使用RecyclerView时获取上下文

    我正在尝试使用回收器视图并处理单击事件.我已经阅读了在回收站视图项上处理onClick事件的各种方法,例如: >在视图持有者类本身内定义单击侦听器. >在onCreateViewHolde ...

最新文章

  1. Python图像处理,替代PS做好效果图!
  2. 用户管理和su,id 命令
  3. 超详细百家大厂面试资料,免费送!
  4. springboot 异步mysql_spring boot 使用@Async实现异步调用方法
  5. 选择湿度传感器注意的若干问题
  6. 深入LINQ | 揭开IQueryable的面纱
  7. 工作感想:浅论Java教学工作
  8. 如何利用ansible callback插件对执行结果进行解析
  9. 推荐几款好用实用的宝藏软件。记得收藏
  10. 激活函数(激励函数)理解总结
  11. js特效--移动的广告窗
  12. 获取汉字拼音首字母方法
  13. PM应具备的规划技巧-顾客价值管理
  14. 项目管理知识体系指南(五)项目时间管理
  15. (Tiled官方文档翻译)第四节:对象的编辑和使用
  16. 光学变焦----景深=景深远界-景深近界
  17. 华为OD机试(A、B卷)、机考,200分的题目整理如下,冲满分必备
  18. StringBuffer换行
  19. PV、UV、IP理解
  20. java分布式实现图片上传到图片服务器

热门文章

  1. redis在php上使用教程,Redis在PHP的一些使用方法
  2. python 箭头_Python命名箭头方向
  3. vue,watch监听数据,数据监听
  4. 955. 删列造序 II
  5. PHP涟漪云-蓝奏云挂载直连下载程序源码
  6. 搜集侠采集织梦系统模板
  7. 什么样的企业适合做响应式网站
  8. 夏季快速入睡的7个妙招
  9. 去掉ecshop后台版权
  10. [OSX安装教程] [整理]虚拟机VM安装Mac OS X