当前位置:   article > 正文

Android paging学习_pagingsource

pagingsource

官方入门教程:https://developer.android.com/codelabs/android-paging-basics?hl=zh-cn#10​​​​​

大致总结如下:

一、目的和好处

分页加载数据(性能好)、无需大量代码(高效)

二、核心组件

1、PagingSource:数据源类,主要提供两个方法:getRefreshKey和load,其中前者是当pagingsource失效后得到用以创建一个新pagingsource的key。

以下两种原因之一会导致 Paging 库中发生失效:

  • 您对 PagingAdapter 调用了 refresh()
  • 您对 PagingSource 调用了 invalidate()

load方法用以加载数据,返回结果LoadResult,LoadResule有三个参数,分别是data(加载的数据源)、prevKey(加载页面前一页的第一个索引)、nextKey(加载页面后一页的第一个索引)

2、PagingData

用于存储分页数据的容器。每次数据刷新都会有一个相应的单独 PagingData 发送,并由其自己的 PagingSource 提供支持

3、PagingConfig

PagingConfig - 用于定义确定分页行为的形参的类。这包括页面大小、是否启用占位符等

4、PagingDataAdapter

用于在 RecyclerView 中呈现 PagingData 的 RecyclerView.Adapter 子类。PagingDataAdapter 可以使用工厂方法连接到 Kotlin FlowLiveData、RxJava Flowable、RxJava Observable 甚至静态列表。PagingDataAdapter 会监听内部 PagingData 加载事件,并在网页加载时高效更新界面

5、Pager 

Pager - 负责生成 PagingData 流的类。这取决于 PagingSource,因此应在 ViewModel 中创建。

下面是我写的简单生成PagingData的代码:

  1. val items:Flow<PagingData<Article>>=Pager(
  2. config=PagingConfig(pageSize=50,enablePlaceholders=false),
  3. pagingSourceFactory={repository.articlePagingSource()}
  4. ).flow.cachedIn(viewModelScope)

 然后在activity中提交flow中的pagingData数据到adapter中即可:

  1. lifecycleScope.launch {
  2. // We repeat on the STARTED lifecycle because an Activity may be PAUSED
  3. // but still visible on the screen, for example in a multi window app
  4. repeatOnLifecycle(Lifecycle.State.STARTED) {
  5. items.collectLatest {
  6. articleAdapter.submitData(it)
  7. }
  8. }
  9. }

以上就是paging学习的简单总结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/286564
推荐阅读
相关标签
  

闽ICP备14008679号