Paging3
Paging3是Google推出分页加载的类库,用于对多条目多数据时的分页加载,多条目可以理解为RecyclerView或ListView中的ItemView,多数据,可以理解为List<T>中的T,也就是对应的实体bean,目前Paging3处于Alpha版本中,当中可能出现各种不确定的Bug,稳定版可用Paging2,但用法可能和Paging3有所不同
PagingDataSource
PagingDataSource,是Paging3中的重要的一环,主要承担的就是数据的获取,可以理解为,我们的网络请求或者读取本地数据库的数据,我们需要在这里请求数据并处理数据
Pager
Pager,也是整个Paging3中比较重要的,他用于装载PagingDataSource,并加载配置,比如可以配置预加载的距离等等,我们在项目中,实际也是用Pager关联到PagingDataSource,然后使用Pager发起一个Kotlin的协程,然后配置PagingDataAdapter使用
PagingDataAdapter
我们可以理解为RecycleView.Adapter,实际上它也是实现的RecyclerView.Adapter。这个方法中有submit()方法非常重要,这个方法是开启数据加载的最后一环,所以必须实现。其中这个adapter中还包含refresh()和retry()的方法,顾名思义刷新和重试,还有就是adapter.loadStateFlow的监听,用于监听数据加载的状态
结果
将这3者串联起来,你就会得到一个自动加载数据的RecyclerView,
当然这是理想状态,如果中间有断网或者数据加载失败的情况,可以通过adapter.loadStateFlow监听,调用refresh() 或者 retry()的方法