问题标签 [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 回答
102 浏览

android - Paging 3 一直在做 api 调用而没有到达 recyclerview 的末尾

分页 3 继续进行 api 调用而没有到达 recyclerview 的末尾我厌倦了将页面大小更改为 15,但使用基本分页源仍然会导致任何问题吗?这是视图的 XML

基本适配器

我的适配器

基本分页源

我的存储库调用我尝试更改初始页面大小但仍然无法正常工作

0 投票
1 回答
765 浏览

android - 房间分页无法合并流程> 与其他流量正确

我正在尝试使用Paging 3库来获取Flow<PagingData<Scan>>Room然后检查是否在 recyclerview 中选择了项目,所以我将这个类映射到另一个名为ScanMapper. 为了实现这个映射,每当用户将一个项目标记为选中时,我都会MapMutableStateFlow<Map<Int, State>>. 这里Map查找 anIndex(Int)来获取State,State只是一个enum代表 State 的类UNINITIALISEDUSELECTEDand SELECTED

我将 Map 的值设置为StateFlow<Map<Int,State>>. 问题是,我试图将 与 结合起来Flow<PagingData<Scan>>StateFlow<Map<Int,State>>以便将 也State作为参数传递给ScanMapper类,因为它State取自StateFlow<Map<Int,State>>并且不是原始Scan类的一部分。但是,尽管我使用该功能在项目单击时将项目标记为已选中,但PagingDataAdapter似乎总是会出现这种情况。State UNINITIALISEDmarkSelected(scanId: Int)

请告诉我我在这里缺少什么。

更新

我能够通过使用 a 来实现我想要的功能,Flow<List<Scan>>Paging 3使用带有DiffUtils. 虽然这不是实际的解决方案,因为它消除了pagination using paging 3库,但以下更改允许我执行项目选择:

更新道

ViewModel 中的更新功能

更新的片段代码

原始问题

我的扫描课:

我的 ScanMapper 类:

Scan 到 ScanMapper 的转换器,反之亦然

我在 Dao 中的 PagingSource

使用 getScansFlow() 获取流量

为 Room 中存在的 id 初始化 Map

ViewModel 中获取流并将它们组合起来的函数

myFlow是一个StateFlow<PagingData<ScanMapper>?>

这就是我Map在 recyclerview 中更新用户何时选择项目的方式。

然后,myFlowfragment像这样收集这个:

0 投票
1 回答
242 浏览

android - 如何将 FirebaseFirestore 与 Paging 3 库一起使用?

我想构建一个像 Twitter 这样的应用程序,我必须在其中显示一个包含实时更新的数据集列表,以便实时计算喜欢和评论。

为此,我正在使用

  1. RecyclerView - 用于显示可滚动数据列表
  2. Jetpack LiveData - 用于观察变化并通知观察者。
  3. Firestore - 作为通过快照更改获取实时数据的后端。
  4. Paging 3 - 用于将大量数据按块加载到列表中。

但是,我将如何通过向列表发出实时更改来实现具有 PaggingSource 类的 firestore 查询呢?

这里 ItemModel 是一个数据类

2.ItemListLiveData类

0 投票
1 回答
689 浏览

android - 如何为基于光标的分页实现 PagingSource.getRefreshKey - Android Jetpack Paging 3

我正在尝试使用Android Paging Library 3实现基于光标的分页(基于GraphQL Relay 规范) ,但我不知道如何实现。getRefreshKey

这是我尝试过的:

在所有示例中,我可以发现页码只是递增/递减,但这不适用于游标。

实现这一点的正确方法是什么?


在这被错误地标记为重复之前,我已经看到了这个问题。这不能回答我的问题,因为他们的 API 被称为而不是像上面那样service.getOrders(query, params.key ?: "", 10)单独的before/after参数。fetchMovies

0 投票
1 回答
612 浏览

android - Android Paging 3.0 加载方法不起作用

我正在尝试实现 android paging 3.0 库,但我遇到了 .load 方法不起作用的问题,起初我认为适配器 submitData 或 layoutManager 不起作用,因为我确实得到了 LoadResult.Page 的响应,但现在在查找时此外,它完全停止了工作

这是我的代码

1- 片段

2-视图模型

3-搜索存储库

4- 寻呼源

5- 适配器

0 投票
0 回答
21 浏览

android - 第二页立即加载,而其他页面根本不加载。第 3 页

我尝试使用 Paging 3 库实现分页。为此,我在Requests课堂上创建了假请求:

传递给构造函数的第一个参数是 id。因此,在这种情况下,我希望收到无限列表,因为每个请求都会返回充满新元素的页面。然后我创建了DataSource

对于这种情况,我决定将页面大小设置为 10。在片段中,onResume我添加了观察者:

到位于 Presenter 中的 Observable:

我还创建了适配器:

并通过调用为其设置数据submitList()

但是当我运行应用程序时,我看到前两页立即加载,当我滚动到底部时,新页面没有加载。那么,这是怎么回事,我做错了什么?提前感谢您的帮助!

0 投票
1 回答
1362 浏览

android - 在分页库 3 中恢复滚动位置

我正在使用带有 RemoteMediator 的分页库 3,其中包括从网络和本地 Room 数据库加载数据。每次我滚动到 RecyclerView 中的某个位置时,导航到另一个 Fragment,然后导航回带有列表的 Fragment,滚动状态不会保留,并且 RecyclerView 从第一个项目而不是位置显示列表在我离开之前,我在。

我尝试过使用 StateRestorationPolicy,但没有成功,似乎无法找到一种方法来获取 PagingDataAdapter 的滚动位置并将其在导航回 Fragment 时恢复到相同的确切位置。

在我的 ViewModel 中,我有一个从 RemoteMediator 收集数据的流:

我将该数据提交给我的片段中的适配器:

在片段的顶部,我的适配器被列为:

我们如何确保适配器在用户返回时离开 Fragment 之前准确地显示列表的位置,而不是从第一个位置重新开始列表?

0 投票
1 回答
386 浏览

android - 尝试使用 Retrofit 发出获取请求时无法为类 java.lang.Object 创建调用适配器

尝试向 NewsApi.org api 发出获取请求时出现以下错误。根据他们的文档,一切似乎都是正确的,我的设置与我在 github 上找到的许多教程和一些示例基本相同。

问题似乎出在我的 api 接口上,但我会分享更多代码以防万一。我的api接口现在如下:

用于刀柄注入的网络模块:

我的 PagingSource 设置:

我的存储库:

视图模型:

分段:

0 投票
1 回答
112 浏览

android - 如何在同一个视图中有两个回收器视图,一个在另一个之上

我正在尝试创建一个聊天应用程序。我想要的是:

  • 实现先前消息的无限列表
  • 每当接收/发送新消息时,将新消息附加到列表的开头。

我已经使用分页库 3 实现了先前消息的无限列表,并使用 Firestore Snapshot 侦听器收听新消息。

我现在的问题是我找不到将快照侦听器获得的新消息列表附加到显示我以前的列表的分页适配器的方法

我尝试使用单独的回收器视图来显示以前的消息和实时消息,但它无法正常工作。

0 投票
1 回答
63 浏览

android - 刷卡刷新错误后如何继续分页?

我正在使用 PagingLibrary 3.0 实现滑动以刷新。

我的存储库返回一个流,PagingData<Item>然后LiveData由视图模型公开。

存储库
视图模型
分段

问题是,当刷新正在进行时,分页停止工作(并且任何正在进行的请求都被取消,而 UI 保持不变 - 谈论你LoadStateFooter)。它会停止,直到刷新成功,其中包括失败。

如果我没有任何数据,我只会显示一个错误屏幕。但在这种情况下,我想查看前面的项目并在出错后继续分页。

有没有办法在刷新错误的情况下继续分页?


用于分页的官方架构组件示例具有相同的行为。