问题标签 [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 投票
1 回答
234 浏览

android - 如何将 PagingSource 和 Room 与 Embedded 注释的字段一起使用

我想使用 Paging 3 Library 以 db 作为 SSO 进行分页,并且我有一些使用嵌入式注释(一对多,关系)示例的数据类↓</p>

AttachmentsEntity 长这样↓</p>

DAO中的函数↓</p>

当我尝试制作一个项目时,它失败并出现错误↓</p>

错误:不确定如何将 Cursor 转换为此方法的返回类型 (androidx.paging.PagingSource<"path".PojoEmbended>)。公共抽象 java.lang.Object getAllChatMessages(@org.jetbrains.annotations.NotNull()

问题来了↓
在这种情况下怎么办更好?从 db List 获取我自己的 PagingSource 并在 RemoteMediator 中使用它或删除Embedded注释并使用TypeConverter ?

0 投票
0 回答
33 浏览

android - 数据未使用 Paging 3 和 Firestore 更新

所以我有一个 RecyclerView 并获取所有数据,然后如果用户单击某些按钮,它会触发相同的功能但使用不同的过滤器。

我遇到的问题是当新查询返回空时它不会清除旧数据。因此,如果它加载所有数据并且他们单击没有数据的过滤器,它将不会清除屏幕上的数据。

我对其进行了测试,当我选择一个包含数据的过滤器时,它将清除旧数据并显示新数据。

我在房间里试过这个,它开箱即用,但我不知道如何用 Firestore 做这个。

关于如何解决这个问题的任何想法?

这是我的仓库,它检查它是否必须从 Firestore 或 Room 获取数据。

这是 Firestore 分页源

这是我更新适配器的地方:

0 投票
1 回答
229 浏览

android - 刷新时分页 3 项闪烁

我正在使用带有流的 Paging 3 来填充我的 RecyclerView,我单击一个项目并转到详细信息页面并为该项目投票,这会将 1 添加到 ViewHolder 中可见的计数器。

一切都正确填充,当我从详细信息页面返回主屏幕时,我已经刷新,但是当使用数据更新时,该项目和其他一些项目会闪烁。

我的问题是,当我更新时,我赞成的项目会完全闪烁,通常使用 recylerview 适配器我会将稳定的 ID 设置为 true,但是你不能使用 PagingDataAdapter 来做到这一点,我认为这可能是使用 Glide 但整个 ViewHolder 会刷新,我列表中的其他一些也会刷新。

我的 PagingDataAdapter 的 DiffUtil 使用 objects.equals,我在我的条目项中覆盖了它,只有在没有用户输入的情况下不太可能随机更改的字段,所以我认为这不是问题。(虽然,在我看来,其他刷新的项目可能意味着这可能是错误的?

观察者 XML -

我的图像加载绑定适配器

这是使用 PagingDataAdapter 从我的 ViewHolder 填充的

使用 Flows 从我的片段中填充

和我的视图模型

然后存储库

0 投票
0 回答
41 浏览

android - 使用 Paging 3 对带有 startRecord 和 endRecord 的列表进行分页

我正在使用第 3 页,但在可用教程中找不到我的用例。基本上我粘贴的是我在文档和所有在线教程中找到的示例,基本上backend.searchUsers(query, nextPageNumber)不适合我的情况,我只需要打电话backend.fetchAList(userId,startRecord,endRecord),所以基本上我需要询问后端只给我特定范围的页面,假设我每次想要 16 个项目,我想我应该问startRecord:0 endRecord:15然后我不知道如果用户在列表末尾滚动我应该问startRecord:16 endRecord:31等等,直到列表末尾。如何使用 Paging3 实现这一目标?

编辑:我假设我的方法应该像我上面提到的我的用例是:作为用户,我想用 PaginatedData 检索一个列表来填充我的适配器,逐渐加载列表以便使用滚动一定数量的页面然后从后端检索新的,条件是后端有这些字段: startRecord: Int; endRecord:Int, hasNextItems: Boolean, List, totalItems: Int

0 投票
0 回答
149 浏览

android - Android - 使用假存储库和新的分页库测试 ViewModel

我想测试我的视图模型类并遇到以下问题。所以,这里是我的代码的相关部分:

我的问题是differ.snapshot()返回一个空列表,因此测试函数中的断言失败。我希望有人可以帮忙。

现在,这里是我的假存储库类和假项目 api 的相关部分,以防您问这些看起来如何:

ItemsRemoteMediator是我从官方分页项目中借来的一个普通的远程调解器类。为简洁起见,我不在这里包括它。唯一的区别是我将假项目 api 传递给它,以便它应该将虚拟项目插入本地数据库(房间)。

总结一下我的问题:为什么differ.snapshot()返回一个空列表?

作为灵感,我查看了这个github 项目以及这里的这个 SO 线程,但不知何故我没有为我工作。而不是val differ = AsyncPagingDataDiffer(..),我也尝试用ItemsAdapter(不包括在内,但它也是一个基本的适配器类扩展PagingDataAdapter)类来测试它,但测试用例也失败了。

0 投票
0 回答
105 浏览

android - 如何使用 Android Paging 3 跳转滚动

我想用 Paging 3 和 Room db 实现跳转滚动。

所以我jumpingSupportedPagingSourceRoom 返回的使用中检查了true

我的分页配置是:PagingConfig(pageSize = 100, prefetchDistance = 20, enablePlaceholders = true, jumpThreshold = 1)

当我在关联的 RecyclerView 上开始平滑滚动到很远的位置时,它永远不会跳转滚动。很多时候,我最终处于某个位置,但不是我想要的。

然后,如果我手动滚动,最终会卡在这个无限显示的“随机”位置周围的 10 到 20 个项目的列表中。

0 投票
2 回答
441 浏览

android - Android Paging 3 加载所有页面(不在嵌套滚动视图内!)

我在 Android 中使用新的 Paging 3 库时遇到问题,因为它一次加载所有页面。看了这篇文章:Android Paging (3) load all pages on once

但在我的情况下,RecyclerView 不在任何无限滚动器(嵌套)内,而只是在父级 ConstraintLayout 内,并且它正在水平滚动!我已经尝试了很多东西,考虑返回我的默认实现(不使用这个漂亮的 API)。这是我的代码示例:

我的存储库:

我的 PagingSource 文件:

我的视图模型:

观察用户界面:

0 投票
1 回答
1415 浏览

android - 如何使用带有 LazyVerticalGrid 的 jetpack 组合分页

我正在尝试使用 LazyVerticalGrid 显示分页项目。我正在尝试的代码如下所示。

请注意,我已导入androidx.paging.compose.itemsandroidx.paging.compose.collectAsLazyPagingItems. 也是categories类型LazyPagingItems<Category>

它与LazyColumnandLazyRow但不是完美配合LazyVerticalGrid。我得到的错误是:

0 投票
1 回答
200 浏览

android - 如何将 Firestore 与分页 3 和 RxPagingSource 一起使用

我正在创建一个使用 RxJava 和分页 3 库的应用程序。我正在使用 RxPagingSource 和 Retrofit 对来自服务器的响应进行分页,但我必须从 Firestore 获取一些数据并且必须分页

这是我试过的代码,但它对我不起作用,这段代码有很多错误

如何使用 Paging 3 库提供的 RxPagingSource 对 Firestore 数据进行分页

0 投票
1 回答
176 浏览

android - 如何在 Paging3 中使用自定义 PagingSource 和 RemoteMediator 加载数据?

我想使用自定义 PagingSource 和 RemoteMediator 加载数据,因为我的 Recyclerview 有不同类型的数据。

这是我的 PagingSource:

这是我的远程调解器:

这是道:

在片段中:

在视图模型中:

因为我有不同种类的数据,所以我尝试使用Any,然后我把它投进去Adapter

现在的问题是:当我第一次加载数据的时候,因为里面什么都没有Room,所以页面是空的......虽然MyMediator会从加载数据network,但是因为MyMediator是在执行之后MyPagingSouce,所以recyclerview还在空的。

我想知道如何通知MyPagingSource新数据已经加载MyMediator,以便MyPagingSource可以从中加载新数据Room