(1)listView设置BaseAdapter的时候,每一个item都是通过adapter的getView(intposition, View convertView, ViewGroup parent)方法获得的,并且ListView中只有第一屏的item需要新建,它的引用会被存在RecycleBin对象内,在拖动时后面的item实际上是重用了之前创建的item,所以在getView()方法中要判断如果当前item对应的view是null的话,就新建一个view对象,否则就复用convertView,而不是每次调用getView(),都新建一个view对象,这样又耗时又消耗内存。
(2) 如果item结构比较复杂,view中的组件比较多的话,查找到View中的所有组件会比较耗时,可以新建一个静态的内部类ViewHolder,里面的成员变量跟view中包含的组件的类型个数相同,将findviewById的结果赋值给ViewHolder中对应的成员变量,再通过setTag()方法将view对象和holder对象绑定,这样只需要在刚开始的时候查找几次组件,之后就能复用ViewHolder里面保存的引用。
(3) 要显示的数据比较多的时候,一次性加载完所有数据又耗时,又占用非常大的内存(如网络请求新闻内容,如果一次性加载所有的新闻内容,可能oom,且activity会空白较长时间),这时采用分页加载,用户滑动到列表底端时自动加载下一页数据。
参考链接:
http://www.tuicool.com/articles/uyiAZzA
http://www.oschina.net/question/54100_31819