问题标签 [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 - 我可以使用 peek() 修改 PagingDataAdapter 的数据集吗?
我正在寻找一种方法来PagingDataAdapter
从 Paging 3 库中更新我的特定项目。目前推荐的方法似乎是使 无效,PagingSource
但这会导致适配器再次获取整个数据集,这效率不高,并且还显示了我的加载微调器。
但是,我注意到我可以使用该peek()
方法访问和修改适配器中的项目,并且它似乎工作得很好。我在这里错过了什么吗?这会在某些情况下分崩离析吗?我知道保持数据类不可变是一种很好的做法,但这种方法让我的生活更轻松。这是我的用法示例,它似乎工作得很好:
android - 如何使用 Paging3 库在 recyclerview 内的每个 n 位置添加分隔符?
在新的 Paging3 库的帮助下,我们可以轻松地在回收视图中插入项目/分隔符,如 google android codelabs 教程https://developer.android.com/codelabs/android-paging#11所示,但如何获取在每个 n 位置插入项目的逻辑就像在 recyclerview 中的每个位置 10 一样。
示例代码
如何在上面的示例代码中找到每10个位置添加一个项目的逻辑
android - 如何从 Paging 3 测试 PagingData
我的ViewModel有一个返回PagingData流的方法。在我的应用程序中,数据是从远程服务器获取的,然后保存到Room(单一数据源):
我如何测试这种方法?我想测试返回流是否包含正确的数据。
到目前为止我已经尝试过:
我想知道我是否走在正确的轨道上。任何帮助将不胜感激!
android - Paging 3 - 如何在 PagingDataAdapter 完成刷新并且 DiffUtil 完成差异后滚动到 RecyclerView 的顶部?
我正在使用带有 RemoteMediator 的 Paging 3,它在从网络获取新数据时显示缓存数据。当我刷新我的PagingDataAdapter
(通过调用refresh()
它)时,我希望我的 RecyclerView 在刷新完成后滚动到顶部。在代码实验室中,他们尝试通过loadStateFlow
以下方式处理此问题:
这确实向上滚动,但在 DiffUtil 完成之前。这意味着如果顶部实际上插入了新数据,则 RecyclerView 不会一直向上滚动。
我知道 RecyclerView 适配器有一个AdapterDataObserver
回调,我们可以在 DiffUtil 完成差异时收到通知。但这会导致适配器的各种竞争条件PREPEND
和APPEND
加载状态,这也会导致 DiffUtil 运行(但这里我们不想滚动到顶部)。
一种可行的解决方案是传递PagingData.empty()
给PagingDataAdapter
并重新运行相同的查询(只是调用refresh
不起作用,因为PagingData
现在是空的并且没有什么可刷新的)但我更愿意保持我的旧数据可见,直到我知道刷新实际上成功了。
android - 分页 3 - 即使 maxSize 为 MAX_SIZE_UNBOUNDED,Room 也会丢页吗?
我正在将第 3 页与 Room 和RemoteMediator
. 我没有设置 a maxSize
,PagingConfig
这意味着无论我们滚动多远,我们都不应该丢弃页面。
但是,我注意到当我滚动足够远时,Room 仍然会掉页。我在 logcat 中通过AdapterDataObserver
.
我的问题是:这是预期的行为,还是错误,还是我这边的一些错误?如果它是预期的行为,该maxSize
属性是什么?我用一maxSize
组值观察了我的数据,但它从未从数据库中删除任何条目。
编辑:我现在还注意到,如果我们正在查看缓存的离线数据,Room 不会丢弃页面。为什么?我希望它的行为完全相同。
android - paging3 中的 PREPEND 状态是什么意思?
我已经看过 google github 中给出的演示。但它只是返回MediatorResult.Success(endOfPaginationReached = true)
同时,如果将其更改为MediatorResult.Success(endOfPaginationReached = false)
,我的代码也可以正常运行。
所以,我想知道 PREPEND 的详细含义是什么?
我问这个问题的原因是在refresing时遇到网络错误,而我Room
的没有任何东西,Paging3不会给出任何提示。(虽然我可以通过在mainView中添加错误提示视图来解决它,我认为它不优雅。)
android - 将分页库从 3.0.0-alpha10 更新到 3.0.0-alpha12 时出现运行时错误
我使用分页 3.0.0-alpha10 创建了我的 pagingSource 类,它可以工作,但是当我将版本更改为 3.0.0-alpha12 时,我收到此错误,这是运行时异常:
这是我的 PaginSource:
它在以前的版本中完全可以工作,但我必须迁移到新版本。
firebase - 我如何将 Pagination 3 与 Firestore 一起使用?
所以,我正在构建一个应用程序。我必须从 Firestore 获取数据到 recyclerView。我不想使用 FirebaseUI,但也无法弄清楚 Pagination 3。只有一个关于它的 Medium 故事,这对我不起作用。所以,我很困惑。
如果有人以前这样做过,我很想听听如何。
我的应用程序使用 MVVM、Hilt 和 Coroutines。但是Flow也可以。
android - Android Paging(三)一次加载所有页面
我在我的项目中使用 Android Paging 3 库来逐页加载我的数据。在这个项目中,我没有使用数据库,这意味着我正在使用network only requests
. 问题是它不是基于用户滚动加载页面,而是首先加载所有页面。这是我用于项目分页部分的代码:
我的 RxPagingSource 类:
我的寻呼机是:
相关 Gradle 部分:
任何帮助,将不胜感激。
android - Paging 3 如何处理数据并与房间交互
所以我最近一直在与 paging 3 库进行交互,我学到了很多关于它的知识,但是有一些东西仍然很难掌握。我的问题分为两点,第一点可能是错误,第二点纯粹是信息性的。
第一点:我注意到将 initialLoadSize 设置为与页面大小相同的大小(我没有尝试其他值)会使适配器在完成加载时跳来跳去(这意味着屏幕外加载在不交互时开始移动列表位置) 如果这不是错误,那么第一点是“适配器如何(以及使用哪些用户可设置的参数)确定加载后何时移动列表(将哪些项目居中)。
第二点:为了修复第一点的行为,我已将 initialLoadSize 恢复为默认值。我还需要实现我自己的与房间交互的分页源(因为由于某些应用程序逻辑,我需要在列表中进一步加载一些项目,然后再通过分页加载它们,这会阻止分页加载任何更多项目之后这些)并且我无法弄清楚如何处理分页源中的所有边缘情况(例如何时将下一个和上一个键设置为空,以及何时根据参数设置之前和之后的项目)。因此,为了更好地理解这一点,也许有人可以解释参数如何相互作用。
我可能应该澄清一下,我还使用了远程调解器,并且我正在将房间寻呼源包装在我自己的寻呼源中。
我目前正在处理的项目是:https ://gitlab.com/sedestrian/pokedex 在“恢复的分页源逻辑”提交下的“开发”分支中。
提前致谢。