问题标签 [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.
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 ?
android - 数据未使用 Paging 3 和 Firestore 更新
所以我有一个 RecyclerView 并获取所有数据,然后如果用户单击某些按钮,它会触发相同的功能但使用不同的过滤器。
我遇到的问题是当新查询返回空时它不会清除旧数据。因此,如果它加载所有数据并且他们单击没有数据的过滤器,它将不会清除屏幕上的数据。
我对其进行了测试,当我选择一个包含数据的过滤器时,它将清除旧数据并显示新数据。
我在房间里试过这个,它开箱即用,但我不知道如何用 Firestore 做这个。
关于如何解决这个问题的任何想法?
这是我的仓库,它检查它是否必须从 Firestore 或 Room 获取数据。
这是 Firestore 分页源
这是我更新适配器的地方:
android - 刷新时分页 3 项闪烁
我正在使用带有流的 Paging 3 来填充我的 RecyclerView,我单击一个项目并转到详细信息页面并为该项目投票,这会将 1 添加到 ViewHolder 中可见的计数器。
一切都正确填充,当我从详细信息页面返回主屏幕时,我已经刷新,但是当使用数据更新时,该项目和其他一些项目会闪烁。
我的问题是,当我更新时,我赞成的项目会完全闪烁,通常使用 recylerview 适配器我会将稳定的 ID 设置为 true,但是你不能使用 PagingDataAdapter 来做到这一点,我认为这可能是使用 Glide 但整个 ViewHolder 会刷新,我列表中的其他一些也会刷新。
我的 PagingDataAdapter 的 DiffUtil 使用 objects.equals,我在我的条目项中覆盖了它,只有在没有用户输入的情况下不太可能随机更改的字段,所以我认为这不是问题。(虽然,在我看来,其他刷新的项目可能意味着这可能是错误的?
观察者 XML -
我的图像加载绑定适配器
这是使用 PagingDataAdapter 从我的 ViewHolder 填充的
使用 Flows 从我的片段中填充
和我的视图模型
然后存储库
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
android - Android - 使用假存储库和新的分页库测试 ViewModel
我想测试我的视图模型类并遇到以下问题。所以,这里是我的代码的相关部分:
我的问题是differ.snapshot()
返回一个空列表,因此测试函数中的断言失败。我希望有人可以帮忙。
现在,这里是我的假存储库类和假项目 api 的相关部分,以防您问这些看起来如何:
这ItemsRemoteMediator
是我从官方分页项目中借来的一个普通的远程调解器类。为简洁起见,我不在这里包括它。唯一的区别是我将假项目 api 传递给它,以便它应该将虚拟项目插入本地数据库(房间)。
总结一下我的问题:为什么differ.snapshot()
返回一个空列表?
作为灵感,我查看了这个github 项目以及这里的这个 SO 线程,但不知何故我没有为我工作。而不是val differ = AsyncPagingDataDiffer(..)
,我也尝试用ItemsAdapter
(不包括在内,但它也是一个基本的适配器类扩展PagingDataAdapter
)类来测试它,但测试用例也失败了。
android - 如何使用 Android Paging 3 跳转滚动
我想用 Paging 3 和 Room db 实现跳转滚动。
所以我jumpingSupported
从PagingSource
Room 返回的使用中检查了true
我的分页配置是:PagingConfig(pageSize = 100, prefetchDistance = 20, enablePlaceholders = true, jumpThreshold = 1)
当我在关联的 RecyclerView 上开始平滑滚动到很远的位置时,它永远不会跳转滚动。很多时候,我最终处于某个位置,但不是我想要的。
然后,如果我手动滚动,最终会卡在这个无限显示的“随机”位置周围的 10 到 20 个项目的列表中。
android - Android Paging 3 加载所有页面(不在嵌套滚动视图内!)
我在 Android 中使用新的 Paging 3 库时遇到问题,因为它一次加载所有页面。看了这篇文章:Android Paging (3) load all pages on once
但在我的情况下,RecyclerView 不在任何无限滚动器(嵌套)内,而只是在父级 ConstraintLayout 内,并且它正在水平滚动!我已经尝试了很多东西,考虑返回我的默认实现(不使用这个漂亮的 API)。这是我的代码示例:
我的存储库:
我的 PagingSource 文件:
我的视图模型:
观察用户界面:
android - 如何使用带有 LazyVerticalGrid 的 jetpack 组合分页
我正在尝试使用 LazyVerticalGrid 显示分页项目。我正在尝试的代码如下所示。
请注意,我已导入androidx.paging.compose.items
和androidx.paging.compose.collectAsLazyPagingItems
. 也是categories
类型LazyPagingItems<Category>
。
它与LazyColumn
andLazyRow
但不是完美配合LazyVerticalGrid
。我得到的错误是:
android - 如何将 Firestore 与分页 3 和 RxPagingSource 一起使用
我正在创建一个使用 RxJava 和分页 3 库的应用程序。我正在使用 RxPagingSource 和 Retrofit 对来自服务器的响应进行分页,但我必须从 Firestore 获取一些数据并且必须分页
这是我试过的代码,但它对我不起作用,这段代码有很多错误
如何使用 Paging 3 库提供的 RxPagingSource 对 Firestore 数据进行分页
android - 如何在 Paging3 中使用自定义 PagingSource 和 RemoteMediator 加载数据?
我想使用自定义 PagingSource 和 RemoteMediator 加载数据,因为我的 Recyclerview 有不同类型的数据。
这是我的 PagingSource:
这是我的远程调解器:
这是道:
在片段中:
在视图模型中:
因为我有不同种类的数据,所以我尝试使用Any
,然后我把它投进去Adapter
。
现在的问题是:当我第一次加载数据的时候,因为里面什么都没有Room
,所以页面是空的......虽然MyMediator
会从加载数据network
,但是因为MyMediator
是在执行之后MyPagingSouce
,所以recyclerview还在空的。