Android paging学习

官方入门教程: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的代码:

val items:Flow>=Pager(
    config=PagingConfig(pageSize=50,enablePlaceholders=false),
    pagingSourceFactory={repository.articlePagingSource()}
).flow.cachedIn(viewModelScope)

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

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

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

你可能感兴趣的:(笔记,学习)