android 分页加载坑,Android paging3 使用和踩坑经验分享

前言

Android 列表分页加载组件 paging3 alpha版本已经出来很久了。目前到了alpha7;

分享一下在项目中使用的经验和坑;不讲原理和源码,纯使用经验分享!

(不要问我为啥把alpha版本用在项目中,问就是任性,问就是paging2太难用了)

准备工作

1.依赖:

本文撰写日期:2020-10-21;最新版为3.0.0-alpha07

//java

implementation 'androidx.paging:paging-runtime:3.0.0-alpha07'

//kotlin

implementation 'androidx.paging:paging-runtime-ktx:3.0.0-alpha07'

根据语言二选一即可,我使用的是kotlin;

使用:

1.adapter

使用paging3 ,RecyclerView的adapter 必须继承 PagingDataAdapter

因为后续分页的UI和操作都归于 adapter 管理;

adpater 构造必须传参数 DiffUtil.ItemCallback ;

用过 AsyncListDiffer 的小伙伴应该明白它的作用;

不明白的可以参考一下这篇文章:Android AsyncListDiffer-RecyclerView最好的伙伴

DiffUtil.ItemCallback 简单介绍:

DiffUtil.ItemCallback的作用就是取代notifyDataSetChanged粗暴刷新列表的;

毕竟粗暴刷新比较消耗性能;

主要介绍三个方法:

override fun areItemsTheSame(oldItem: T, newItem: T): Boolean {}

override fun areContentsTheSame(oldItem: T, newItem: T): Boolean {}

override fun getChangePayload(oldItem: T, newItem: T): Any? {}

paging3的设计理念是不建议对列表数据直接修改;而是对数据源进行操作,数据源的变化会自动更新到列表;

DiffUtil.ItemCallback 就是用来比对数据变化,从而决定更新对应UI;并执行条目动画;

areItemsTheSame

比对新旧条目是否是同一个条目;

一般比对条目的唯一标示id即可,谨慎对待,如果条目不同则可能不会更新UI;

areContentsTheSame

当上面的方法确定是同一个条目之后,这里比对条目的内容是否一样,不一样则会更新条目UI

建议这里的比对把UI展示的数据都写上,写漏了会导致UI不更新对应字段;

getChangePayload (可选)

这个方法对应 RcyclerView的 adapter的 第三个参数;用于条目内部的局部刷新;

override fun onBindViewHolder(

holder: RecyclerView.ViewHolder,

position: Int,

payloads: MutableList

)

2.数据请求处理

这里利用知乎日报的接口作为范例:

没有使用到paging3的数据库缓存方案 remoteMediator;因为参数被注解为

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Paging3 是一个用于在 Android 应用中实现分页加载数据的开源库。它是 Google 官方发布的最新版本的 Paging 库,相较于以往的版本,Paging3 在实现简单、功能强大和性能优化方面有了很大的改进。 首先,Android Paging3 提供了强大的数据加载和显示机制。它通过将数据分割成固定大小的数据块 (page),并在需要时按需加载和展示数据,实现了无限滚动加载的效果。相较于传统的 RecyclerView 分页加载Paging3 更加灵活,可以自动处理数据的加载和卸载,无需手动实现判断是否到底部、加载更多等繁琐逻辑。同时,Paging3 还支持局部刷新、数据源无缝替换等操作,让数据的加载和显示更加简单和高效。 其次,Paging3 在性能方面进行了优化。它使用了异步数据加载和显示机制,可以在后台线程上进行数据加载,不会阻塞主线程。同时,Paging3 采用了数据预加载和缓存策略,可以将下一页的数据提前加载到内存中,从而提高用户体验和应用的响应速度。并且,Paging3 还支持数据的持久化存储,可以将加载的数据缓存到本地数据库或文件中,避免了重复加载数据的开销。 最后,Paging3 还提供了丰富的扩展功能和灵活的定制选项。开发者可以自定义数据加载策略、数据源类型、数据显示方式等,以满足不同的业务需求。同时,Paging3 还提供了相关的辅助类和工具方法,帮助开发者更加便捷地实现数据的分页加载和显示。 总结来说,Android Paging3 是一个功能强大、性能优越的分页加载库,可以帮助开发者轻松实现数据的分页加载和显示,提高应用的用户体验和性能表现。无论是处理大量数据的列表页,还是实现无限滚动加载的功能,Paging3 都是一个值得推荐的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值