ListView优化大致从以下几个角度:
1.复用已经生成的convertView;
2.添加viewHolder类;
3.缓存数据(图片缓存);
4.分页加载。

具体方案:

1、如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view。

2、给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。

3、如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。

item高度问题

ListView一般item高度都是固定的,但也存在着item高度不固定的情况,譬如微博、微信、QQ空间的消息展示页面,那么在ListView的adapter运行上就会有细微差别:

因为没有固定的Item高度,无法计算一个屏幕中能够显示的最大高度,系统会会先创建一个View,第一轮是用这个View来试探能放多少个item,试探出结果可以放3个Item,所以第二轮的0-2才是真正创建的View,屏幕上显示了3个Item。当往下滚时,Item0没有完全出去,下面有来了个Item3,所以这时的Item有创建了一个View,屏幕上此时显示4个Item。之后4个Item就是做多显示的数量,再往上滚动,convertView就开始重用了,Item4和Item0的View是一个对象。其中的差别在于item的初始化数和最大运行数不一定一样。

http://blog.fangjie.info/2014/05/14/ListView的性能优化之convertView和viewHolder/

http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html

http://android.amberfog.com/?p=296

最新文章

  1. Linux C 字符串输出函数 puts()、fputs()、printf() 详解
  2. js报错:email() is not a function
  3. xfce4 启用回收站
  4. 异步编程中的最佳做法(async await)
  5. [已解决] windows 下 git 免输密码
  6. 计算C++类所占用的字节(即sizeof)
  7. spark HA 安装配置和使用(spark1.2-cdh5.3)
  8. 【BZOJ】【1877】【SDOI2009】晨跑
  9. struts2框架开发的第一个应用
  10. SQLserver 连接+开窗函数+视图+事务
  11. Intent的属性及Intent-filter配置——Data、Type属性与intent-filter配置
  12. tomcat加入系统服务+开机自启
  13. MongoDB的DBREF 使用.
  14. 【java】package
  15. vue二次实战(一)
  16. Android Studio3.1.2升级问题:Configuration 'compile' is obsolete and has been replaced with 'implementation'.
  17. jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详解
  18. Java+Selenium 如何处理Try/Catch
  19. WDA基础十一:Excel上载
  20. attention、self-attention、transformer和bert模型基本原理简述笔记

热门文章

  1. (字符串 KMP)Blue Jeans -- POJ -- 3080:
  2. 洛谷 P1967 货车运输(克鲁斯卡尔重构树)
  3. Lucene4:获取中文分词结果,根据文本计算boost
  4. Flask数据库
  5. [LeetCode 题解]: Partition List
  6. Solr查询query效果对比
  7. nmon在secureCRT下显示乱码问题
  8. Fiddler关闭后打不开网页
  9. 【扫盲】HTML5、Web APP、3G网站、Wap网站傻傻分不清楚
  10. 就这么简单!构建强大的WebShell防护体系