一种优化 ListView 初始化加载速度的方案

我在使用 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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值