从知乎整理,感谢所有的参与者!
1. 在getView中,多个点击事件可以共用一个OnClickListener,避免创建多个对象。传递数据可以使用getTag和setTag方法设定。
2. 利用ViewHolder缓存,避免每次创建新的View
3. 让itemView的layout层级越简单越好。避免过度重绘——这是所有布局都应该遵循原则。
4. 尽量能保证 Adapter 的 hasStableIds() 返回 true,这样在 notifyDataSetChanged() 的时候,如果 id 不变,ListView 将不会重新绘制这个 View,达到优化的目的;
5. 为了保证 ListView 滑动的流畅性,getView() 中要做尽量少的事情,不要有耗时的操作。特别是滑动的时候不要加载图片,停下来再加载。使用Glide或Picasso等库可以帮助。
6. 使用 RecycleView 代替。 ListView 每次更新数据都要 notifyDataSetChanged(),有些太暴力了。RecycleView 在性能和可定制性上都有很大的改善,推荐使用。
7. 参见:http://www.imlongluo.com/blog/?p=263