我在使用 ListView 的时候,有一个问题困扰我挺久:能不能控制 ListView 初始化时加载的Item数量?
Adapter的getCount方法?我一直以为getCount方法是用来告诉 Listview,Adapter有多少数据的,而ListView初始化时只加载一个屏幕的数据。那到底是这样吗?
为什么要控制 ListView 初始化时加载的Item数量?
比如,如果我刚打开一个页面,ListView关联Adapter就开始加载十几条数据,如果加载的Item是TextView还好,影响不大,但如果是Webview呢?有些业务是需要Webview来作为ListView的Item,这时候就卡爆了。
我对ListView不怎么熟悉,因为我刚开始学习Android不久,Recyclerview就开始火了,经常用的也是RecyclerView,在学校时做的小作品也比较简单,在列表加载遇到的坑也比较少,现在工作了,不停的踩坑,发现要认真学一下ListView和RecyclerView才行。从实现原理入手。
接下来提出一种优化ListView的方案:
初始化ListView时,如果Item过于复杂,那么初始化时数据源应尽量小。
我以前从来就没有关心过初始化数据源大小的问题,现在从源码来分析。
ListView在初始化时,会调用setAdapter方法来关联Adapter。在setAdapter方法,又会调用到getCount方法,源码如下所示:
public void setAdapter(ListAdapter adapter) {
//代码省略
// AbsListView#setAdapter will update choice mode states.
super.se