论坛首页 移动开发技术论坛

[Android]ListView性能优化之视图缓存

浏览 17192 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-03-28  
aa87963014 写道
http://www.iteye.com/topic/860925

这个是我的见解。

感谢参与讨论,如果tag用起来有问题,而且数据量有限确实为一个不错的办法。

不过我对您这句有一些不同的看法,前提是如果tag有效的话:
“大概思想是setTag();getTag();来保存已经加载过了的 ViewHolder 组件,现在我称ViewHolder  为ABCD 意为毫无特殊意义的类,顶多用到了单例的思想 ”
这样做主要是为了减少findViewById次数,因为这个函数操作起来是比较费时的,而且找到后仍然需要强制类型转换,相比ViewHolder的方式,牺牲一点空间只需要强制类型转换即可。

————————————————————————————————————————
结合tag的问题,还要减少findViewById的次数,还要控制内存不能存储过多的数据,设想是否可以这样:我们不使用XML文件来生成对象(convertView = mInflater.inflate(R.layout.list_item_icon_text,null);),而用自定义的类(继承自RelativeLayout或其他容器),然后在这个里面直接把子元素findViewById后放到成员变量再暴露出来,这样可以解决tag问题,也可以达到减少findViewById的次数,不知道大家如何看待,欢迎大家交流。

PS:如果我没记错的话,好像新浪微博也是这么做的
0 请登录后投票
   发表时间:2011-04-06  
本帖的续:
[Android]ListView性能优化之视图缓存(续)
http://www.iteye.com/topic/987388

欢迎大家交流。
0 请登录后投票
   发表时间:2011-06-09  
caizi12 写道
over140 写道
caizi12 写道
这不是cnBlog 上面的帖子吗,下午刚看的。。。

是一个人吗??

嗯,是同一个人,也发到这边来讨论一下


我也是两边串啊,这些天发现javaEye上面的帖子不行了。很少有人发了。质量也不行。就跑到,CNBLOG上面看去了。

哈,现在都差不多,一份账号密码,上遍所有论坛。
先藏收起来。
0 请登录后投票
   发表时间:2011-12-26  
有点恶心。
我在listview里面加了spinner控件。
结果我更改带第一个spinner,滑动屏幕后,发现隔三个就跟着第一个一起改变了。。。
0 请登录后投票
   发表时间:2011-12-27  
mpqi 写道
有点恶心。
我在listview里面加了spinner控件。
结果我更改带第一个spinner,滑动屏幕后,发现隔三个就跟着第一个一起改变了。。。

文章已经提到,ListView里面的item是重用的,也就是如果只想第一个带spinner,那么就需要根据当前行判断是不是第一行,是就带,不是就要做一下处理,不能不管。
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics