对于ListView的卡顿问题,有如下一些建议:
1、使用ListView的时候注意尽量使用layout_height=”match_parent”。
2、如果第1点无法避免,需要注意ListView的父布局,父布局以上绝对不要使用RelativeLayout,即使使用FrameLayout或LinearLayout会增加布局层级。
3、如果第1点无法避免,需要注意不要在getView中使用setVisibility这种会触发ListView重新onMeasure的操作。
4、如果ListView存在位移,比如下来刷新等,绝对要遵循第1点来设置layout_height=”match_parent”,不然频繁触发onMeasure会导致交互卡顿。
5、关于NoScrollListView,这种布局是严禁使用的,无论是哪种场景,如果ScrollView中必须要使用ListView,可以使用SimulateListView控件代替ListView https://github.com/MegatronKing/SimulateListView
6、由于GridView的measure机制和ListView有些差别,虽然同样会有性能损耗但不大,不过还是建议开发者遵循以上几点!