使用AsyncListUtil优化RecyclerView

大家好,今天为大家推荐的是来自极光推送的Hevin同学所翻译的文章,重点是介绍AsyncListUtil这个类的使用,它在Android API 23开始就被加入到support.v7当中了,你可能很少看到有人提起过它,但实际上却是非常实用的工具类,至于怎么使用,看完本文你就知道。当然除了AsyncListUtil之外,DiffUtil这个类也是值得你了解一下的,本文虽然没有提及,有兴趣的读者可以自行拓展。文章的示例代码虽是用Kotlin编写,但不妨碍Java的同学阅读。

  • 原文地址:https://zhuanlan.zhihu.com/p/29491805


AsyncListUtil 是一个用于异步内容加载的类,在 Android API 23 时被加入到 support.v7 当中。不过好像很多人对它还并不了解,网上也没有太多相关的资料。今天这里就来介绍下 AsyncListUtil 的用法。

首先,AsyncListUtil 通常和 RecyclerView 搭配使用的。其能够在后台线程中加载 Cursor 数据,同时保持 UI 和缓存的同步来实现更好的用户体验。不过 AsyncListUtil 是通过单个线程加载数据,因此适用于从二级存储(比如硬盘)中加载数据,而不适用于从网络加载数据的情况。

RecyclerView的结构

相信绝大部分 Android 开发者对此都已经非常熟悉了。

RecyclerView + AsyncListUtil的结构

可以看到 AsyncListUtil 是通过 AsyncListUtil.ViewCallback 来判断当前数据可见的范围,再通过 AsyncListUtil.DataCallback 从后台加载所需的数据,并在加载完成时通知 AsyncListUtil.ViewCallback。

因此要使用 AsyncListUtil,首先需要继承实现 AsyncListUtil.DataCallback 和 AsyncListUtil.ViewCallback 这两个抽象类。

下面我们通过代码来看看实际要怎样实现?先上效果图:

数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值