listView 利用viewholder进行优化
2016-05-06 11:08
211 查看
ListView优化:通过convertView+ViewHolder来实现,ViewHolder就是一个静态类,使用 ViewHolder 的关键好处是缓存了显示数据的视图(View),加快了 UI 的响应速度。
当我们判断 convertView == null 的时候,如果为空,就会根据设计好的List的Item布局(XML),来为convertView赋值,并生成一个viewHolder来绑定converView里面的各个View控件(XML布局里面的那些控件)。再用convertView的setTag将viewHolder设置到Tag中,以便系统第二次绘制ListView时从Tag中取出。(看下面代码中)
如果convertView不为空的时候,就会直接用convertView的getTag(),来获得一个ViewHolder。
到这里,可能会有人问ViewHolder静态类结合缓存convertView与直接使用convertView有什么区别吗,是否重复了
在这里,官方给出了解释
缓存convertView传递给getView()方法来避免填充不必要的视图
使用ViewHolder模式来避免没有必要的调用findViewById():因为太多的findViewById也会影响性能
ViewHolder模式通过getView()方法返回的视图的标签(Tag)中存储一个数据结构,这个数据结构包含了指向我们
要绑定数据的视图的引用,从而避免每次调用getView()的时候调用findViewById()
当我们判断 convertView == null 的时候,如果为空,就会根据设计好的List的Item布局(XML),来为convertView赋值,并生成一个viewHolder来绑定converView里面的各个View控件(XML布局里面的那些控件)。再用convertView的setTag将viewHolder设置到Tag中,以便系统第二次绘制ListView时从Tag中取出。(看下面代码中)
如果convertView不为空的时候,就会直接用convertView的getTag(),来获得一个ViewHolder。
到这里,可能会有人问ViewHolder静态类结合缓存convertView与直接使用convertView有什么区别吗,是否重复了
在这里,官方给出了解释
缓存convertView传递给getView()方法来避免填充不必要的视图
使用ViewHolder模式来避免没有必要的调用findViewById():因为太多的findViewById也会影响性能
ViewHolder模式通过getView()方法返回的视图的标签(Tag)中存储一个数据结构,这个数据结构包含了指向我们
要绑定数据的视图的引用,从而避免每次调用getView()的时候调用findViewById()
相关文章推荐
- ClassLoader原理
- UE4 下载4.11.2的时候:当前遇到连接问题,正在重试
- 字符串算法之字符串循环左移
- Spring的常见问题及答案
- javascript代码模块化Demo(使用Require.js)
- C++ STL学习之stack
- poj1325——Machine Schedule(最小顶点覆盖)
- Linux下的应用程序性能分析
- Chart.js docs
- 在图片上画车位存入txt文件中(1)
- canvas 一基础学习
- 方法的重载(Overload)
- Android自定义控件(特效一) 点击屏幕,根据所点击的位置绘制圆环
- 【 Linux】脚本导入格式
- 做程序猿的老婆应该注意的一些事O(∩_∩)O~
- Pelican + Github 搭建静态个人博客
- iOS应用兼容IPv6
- 111. Minimum Depth of Binary Tree 二叉树的最小深度
- logistic回归问题自我答疑
- Spring整合DWR comet 实现无刷新 多人聊天室