问题标签 [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 - 如何使用 Android androidx.paging.PagingDataAdapter loadStateFlow 来显示 Empty、Loading 和 Loaded UI 状态
我当前的 android 应用程序使用 Room Paging3 库
我的要求是显示“数据加载微调器”、没有数据可用时的空消息或加载的数据。
我可以在加载时成功显示加载微调器或数据,但是当没有数据显示时它不起作用。
我已经尝试过 SO 上提供的解决方案,但是没有一个能解决我的问题
成功处理加载和加载数据的代码版本类似于:-
我也尝试使用这个投票给 SO 答案来显示空状态,但是它对我不起作用
该问题是由发出此条件的 loadStateFlow 引起的
在加载数据时。
我的列表屏幕已拉刷新,在数据刷新过程中,我首先删除所有现有行,然后远程获取所有数据。
无论如何我可以PagingDataAdapter.loadStateFlow
用来显示我的三种状态加载,加载或空?
我的ViewModel
代码类似于:-
我的Repository
代码类似于:-
我的房间查询类似于这个
我哪里出错了?
是否有可能实现我想要的功能?
更新
我相信我有两个不同的问题。
第一个是由我的初始数据同步引起的,我使用 Android Workers 从远程源下载数据并插入到我的本地 Room 数据库中。由于远程数据的组织方式和可用的 Restful API,列表中显示的数据可以由多个工作人员插入。本地插入的数据的这种“分区”导致提交给我的 Paging3 适配器的数据是零星的,这意味着加载状态循环通过加载 -> 未加载 -> 加载 -> 未加载。
我在同步进行时显示列表片段,这导致加载 Spinner 和显示的数据列表之间的屏幕内容“闪烁”
android - 将 recyclerview 选择与分页 3 一起使用
我正在尝试将选择(https://developer.android.com/reference/androidx/recyclerview/selection/package-summary)与新的分页库(所以分页3)一起使用
使用 Paging 2 是可行的,因为我们使用的是 PagedListAdapter 并且可以与 Selection 库一起使用,但现在使用新的 PagingDataAdapter 我不能让它工作了。
https://developer.android.com/reference/kotlin/androidx/paging/PagingDataAdapter
我们正在丢失 getCurrentList(),setHasStableIds() 现在将返回 UnsupportedOperationException。
因此,如果有人戴上它,我将不胜感激。
android - 使用远程调解器和分页源对具有分页 3 的存储库进行单元测试
我正在尝试对 android 中的存储库类进行单元测试,该存储库类使用远程调解器和分页源进行分页。
但是当我运行测试时,返回的结果是空的,虽然实际应该包含测试项。
如下所示:
这是我的存储库
这是我的UT
这里是 FakeApi、FakePagingSource 和 FakeDao
android - Android Paging 3 - 滚动和加载新页面时出现闪烁、故障或位置跳跃
大家好,我正在使用 Android Jetpack Paging 库 3,我正在创建一个实现网络 + 数据库场景的新闻应用程序,并且我按照谷歌https://codelabs.developers.google.com/codelabs/android-paging的代码实验室,我几乎就像在代码实验室中一样,我几乎匹配了示例https://github.com/android/architecture-components-samples/tree/main/PagingWithNetworkSample中显示的所有操作。
它几乎可以正常工作...但是我的后端响应是页面键控的,我的意思是响应带有新闻列表和下一页 url,远程调解器获取数据,填充数据库,设置存储库,设置视图模型。 ..
问题是:当recyclerview加载数据时,会发生以下情况:recyclerview闪烁,项目跳转,被删除,再次添加等等。我不知道为什么 recyclerview 或其 itemanimator 会这样,看起来如此丑陋和故障。更重要的是,当我滚动到列表的末尾时,会获取新的项目,并且再次发生故障和跳跃效果。
如果你能帮助我,我将非常感激,我坐了三天,非常感谢你提前。这是我的代码片段:
这是DAO
新闻数据库Kt
远程调解器
分页存储库
博客Viewmodel
政治片段Kotlin
博客适配器
我的视图持有者
NewsApi接口
}
我尝试设置 initialLoadSize = 1 但问题仍然存在
编辑:感谢您的回答@dlam,是的,确实如此,我的网络 API 返回按 id 排序的结果列表。顺便说一句,当应用程序脱机运行时,项目也会跳转。
在线刷新和加载视频
刷新和离线加载时的视频
再次感谢,这是我的要点链接https://gist.github.com/Aydogdyshka/7ca3eb654adb91477a42128de2f06ea9
编辑 非常感谢@dlam,当我设置pageSize = 10时,跳跃消失了......然后我记得为什么我首先设置pageSize = 1......当我刷新时,加载了3 x pageSize的项目,甚至如果我覆盖了 initialLoadSize = 10 ,它仍然会在刷新后加载 3 x pageSize 调用 append 2x ,我可能做错了什么,当我刷新时只加载第一页的正确方法是什么?
android - 使用 RxJava 时在分页 3 库中刷新
当使用expenseAdapter.refresh() 刷新适配器 时,当Pager 期望创建一个新实例时,重新使用了一个PagingSource 实例。确保传递给 Pager 的 pagingSourceFactory 总是返回一个新的 PagingSource 实例。 这是我用来获取数据的可流动对象。
任何帮助将不胜感激。
android - 在Paging3中,删除item后,recyclerview如何恢复到原来的位置?
我模仿了codelab,实现了getRefreshKey()
方法,但是由于params.loadSize
是3*PAGE_SIZE
在刷新之后(也就是删除一个item或者编辑一个item),所以我的recyclerview大概率不会回到原来的位置。我应该怎么办?这是我的寻呼源:
android - Android Paging 3:LoadType.APPEND 返回空远程键
我一直在尝试解决如何解决RemoteMediator
's 的问题APPEND
LoadType
。
在空的 Room DB 上,LoadType
流程如下: REFRESH -> PREPEND -> APPEND (remoteKeys = null, endOfPaginationReached = true)
实体和远程键表至少有 10 行,LoadType
流程如下: REFRESH -> PREPEND -> APPEND (remoteKeys = prev=null, next=2, endOfPaginationReached = false)
显然,我的问题是在新安装的设备上(房间数据库为空),用户不会看到超过 10 个项目,因为APPEND
'sstate.lastItemOrNull()
正在返回null
。
到目前为止,这是我的代码:
对于我的load()
功能:
让我的应用程序至少无法向下滚动一次!
android - 分页3调用adapter.refresh首先调用第2页
我正在使用分页 3 3.0.0-beta02
。当我将它与滑动刷新布局一起使用时,我注意到它调用第 2 页然后第 1 页,由于此问题,第 2 页在第 1 页和第 3 页之后首先加载,并且适配器滚动到第 2 页开始的中间位置。
我最初注意到同样的事情,当我转到片段时它会加载 2 页。
另一件事刷新第二次或更进一步它工作正常,但它仍然加载 2 页。最初是第 1 页,然后是第 2 页
这是我的分页配置
寻呼源
我找到了一些hacky修复,但我想知道真正的解决方案
android-paging-3 - onItemRangeInserted 不适用于使用 insertSeparators
我希望 recyclerView 在插入新项目时滚动到顶部,它适用于上面的代码。然后我使用下一个代码将分隔符添加到 recyclerVeiw,
binding.rv.layoutManager?.scrollToPosition(0)
不再起作用。
日志 :
似乎binding.rv.layoutManager?.scrollToPosition(0)
在 insertSeparators 之前执行得太早了。
android-paging-3 - Paging3 - 如何在聊天应用程序中进行反向分页
我最近迁移到 Paging3。但是,我注意到大多数教程和指南主要是正常分页(从上到下)。
当用户滚动到顶部边界时,我需要实现反向分页,将加载页面 2、3、4 .. 是否有任何教程/指南?
PS:现在初始加载工作正常,但是当我滚动到最顶部时,我不知道如何加载第 2 页数据。
我目前的做法
寻呼源
存储库
视图模型
分段