1、ViewHolder模式,而且ViewHolder作为内部类使用时声明为static的
2、异步加载:耗时的操作放在异步线程中
如果在adapter中的某些操作需要耗费大量的时间,这个时候就要用到异步线程来进行异步就在数据。比如:现在要加载图片,此时我们需要根据url访问网络得到数据,然后将数据解析为Bitmap设置给View
3、listView错位加载问题:判断url是否一致解决
4、为图片设置缓存
5、ListView的滑动时停止加载和分页加载
6、硬件加速,硬件加速只需要设置--android:hardwareAccelerate="true"即可
7、自定义view降低层级
8、对于一些并非需要刷新整个ui的操作,尽可能做到单个ui刷新,不要让整个可见视图整体做视图渲染
9、listview在拖动的时候背景图片消失变成黑色背景,等到拖动完毕我们自己的背景图片才显示出来;所以需要将android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″
10、animateCache: ListView默认开启了animateCache,这会消耗大量的内存,因此会频繁调用GC,我们可以手动将它关闭掉
11、使用 RecycleView 代替。
ListView 每次更新数据都要 notifyDataSetChanged(),有些太暴力了。RecycleView 在性能和可定制性上都有很大的改善,推荐使用
12、处理空ListView
ListView用于展示列表数据,但当列表中无数据时,ListView不会显示任何数据或提示,按照完善用户体验的需求,这里应该给以无数据的提示。幸好,ListView提供了一个方法——setEmptyView(),通过这个方法,我们可以给ListView设置一个在空数据下显示的默认提示。