9

我是分页库 3.0 的新手,我只需要对本地数据库中的数据进行分页。最初,我从数据库中获取 PagingSource<Int, MessageDisplayModel> 并将其用作流。

fun getChatMessages(chatWrapper: ChatWrapper): Flow<PagingData<MessageDisplayModel>> {
    return Pager(
            config = PagingConfig(pageSize = 15,
                    maxSize = 50,
                    enablePlaceholders = true)
    ) {
        xmppChatManager.getChatMessages(chatWrapper)
    }.flow
}

然后在 PagingData 通过 submitData() 方法传递给适配器之后。

lifecycleScope.launch {
        @OptIn(ExperimentalCoroutinesApi::class)
        mViewModel.getChatMessages(chatWrapper).collectLatest {
            adapter.submitData(it) }
    }

现在,我关心的是如何从传递给适配器的 PagingData 中获取 MessageDisplayModel 的实际列表?

4

2 回答 2

13

您可以使用adapter.snapshot().items. 更多信息可以在这里找到。

于 2020-09-16T15:02:24.933 回答
0

从第 3 页开始,需要构造函数来启动整个项目列表,以便在布局中加载一次以进行绑定,如果使用 snapshot() 获取页面列表,则无法更新持有者 itemcount,它在 bindviewholder 之前运行,并且 DiffUtil 也具有高阶生命周期

尝试使用自定义构造函数

于 2020-12-06T09:09:32.543 回答