问题标签 [android-paging-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
47 浏览

android - 在用户使用 Paging3 滚动时刷新数据 - RemoteMediator

如果来自服务器的缓存数据有任何更改,我想在用户滚动并更新本地数据库(房间)时刷新后台的每个页面。我曾尝试使用LoadStateListener来监听附加事件,然后调用PagingAdapter.refresh(),但这会导致RecyclerView非常故障。请问有没有更好的方法来做到这一点?

0 投票
1 回答
467 浏览

android - 如何使用 Kotlin 从 Paging 3 Android 获取总项目以实现每个项目的 onclicklistener?

我在这里关注这篇文章。一切运行良好,但现在我想为每个项目实现 onclicklistener。

这是我的代码:

SongViewModelAdapter.kt

HomeFragment.kt

我目前正在使用 FirestorePagingAdapter,它运行良好。对于那些在第 3 页有经验的人,您将如何传递总项目以实现每个项目的点击侦听器。看到类似的问题,但从来没有一个明确的解决方案。挠了一天的头。您的帮助将不胜感激。

编辑 1:添加 HomeFragment.kt

编辑 2:更新了用户建议。点击还是不行。我需要添加空检查。

0 投票
0 回答
415 浏览

android - ConcatAdapter 内部的 Paging3 Library 的 PagingDataAdapter 加载所有页面而不滚动

我有 PagingDataAdapter,它包含在 ConcatAdapter 内的 GridAdapter 中。当我收集这样的数据时:

分页库开始按顺序加载所有页面,无需任何滚动。

postsAdapter 是一个带有 GridLayoutManager 的适配器,它是 PagingDataAdapter 的一个包装

viewModel 中的 setPostState 函数:

GridAdapter 中的 notifyItems 函数:

我怀疑 concat 适配器为我的 GridAdapter 提供了无限的高度,它开始加载所有内容,就好像我将 recyclerView 放在 nestedScrollView 中一样

0 投票
0 回答
214 浏览

android - Android Paging 3 库,分组项目

我们正在开发一个聊天应用程序。如果消息包含图像,并且它们一个接一个地出现,我们在适配器中将这些图像分组到一个消息中。

问题 1

在数据库和 API 的其余部分中,我们分别拥有这些消息,但在适配器中,我们将它们分组以作为一条带有小图像图标的大消息显示给用户。

我们希望实现一个分页库,以便可以滚动到历史记录中的任何消息。目前,我们正在使用 a RemoteMediator<Int, Message>,它向我们的服务器发出请求并获取消息。为了存储我们正在使用的这些消息Room,它返回PagingSource<Int, Message>. 显示我们正在使用的消息PagingDataAdapter

一切正常,问题是我们如何在 Paging 3 中实现这种分组图像逻辑?我们可以在哪些步骤以及何时进行此更改并将消息组合在一起?

示例

分组后,我们应该收到

问题2

根据消息是什么beforeafter我们会以不同的方式显示消息,例如,我们仅在第一条消息上显示配置文件图标,来自同一用户的所有其他消息显示时没有配置文件图标。

我们可以更改我们的数据,PagingData.map{}但我们没有关于之前和之后项目的任何信息。这怎么可能实现?

0 投票
4 回答
880 浏览

android - 页脚不显示与第 3 页

我正在关注 Paging 3 的 Codelab。

分页工作正常,但尝试添加页脚似乎不起作用。

LoadStateAdapter我的代码在使用方面与 Codelab 完全一样

这就是我添加页脚的方式

handlePagingState只是跟随状态并将其绑定到Page状态(Loading,Error,Empty等)。无论如何,删除它并没有改变。

ListLoadStateAdapter.onCreateViewHolder()甚至没有被调用, . 的构造函数也没有ListLoadStateViewHolder

我究竟做错了什么?有什么我错过的吗?或者也许是某个地方的错误?

0 投票
1 回答
124 浏览

android-paging - 有没有办法转换列表到 PagedData而后备分页源数据不使用房间数据库

  • 我确实有一个分页数据源,它PagedData<T>在从 SQLite 初始加载后返回与 pagedAdapter 一起显示的数据。在一些服务器事务之后,我收到一个列表,List<T>在转换和缓存之后需要显示它。
  • 我知道使用 Room db 会很容易,但现在已经不在讨论范围内了。如何更新初始分页列表并创建一个新的 pagedList,然后将其推送到适配器。
  • 尝试在新服务器列表上使用映射转换为 PagingDataObject 但据我所知这是不可能的。list.map { item -> {PagingData<item>}
0 投票
0 回答
65 浏览

android - 快速插入数据时,Android Paging 3 无法立即更新

当我将多个数据一一插入到 Room 中时(而不是批量插入,因为它是一个聊天应用程序),但 Paging 3 无法立即更新列表。插入数据后,如何立即更新列表?还是 Paging 3 + Room 不适合聊天应用?谢谢!

0 投票
0 回答
402 浏览

android - 如何在 Android 中使用 Paging 3 库观察 Room 中更改的项目

我有一个使用加载的数据列表PagingSource

这是我在 DAO 中的代码:

我通过以下方式获取分页数据Flow

我有另一个函数正在更新本地数据库中的项目:

调用此函数后,列表中的整个数据将从头开始加载。

有没有办法使用分页库只获取更改的数据?

0 投票
0 回答
134 浏览

android - 如何在不刷新整个数据集的情况下对分页数据(分页 3)执行 CRUD 操作?

我的 Viewmodel 中有一个缓存的分页数据流。在我的回收站视图中更新任何项目时,如何在分页数据上执行过滤器、映射等转换?

我不想在每次更新时都刷新数据。

我的第二个问题是,即使我更新了整个数据,我也看到 diff util 不是从第 2 页开始调用的。我在这里做错什么了吗?

0 投票
0 回答
53 浏览

android - 是否有任何示例来测试返回 Flow 的函数>?

我在一个名为的存储库类中有一个函数getAll()。我的问题是,我如何测试这个功能?这是函数内部的代码getAll()

这是 MoviesPagingSource 类中的内容。

PagingData是 Paging v3 android 库中的一个类。https://developer.android.com/topic/libraries/architecture/paging/v3-overview

这是我迄今为止尝试过的单元测试:

结果是