问题标签 [android-paging-library]

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 回答
815 浏览

android - 如何从 Android Pager 3 中的 RecyclerView 中删除丢弃的项目?

我正在使用Android Paging 3 library。在我的测试配置中,它有一个PagingConfigwithpageSize = 10maxSize = 40. 当我向下滚动配置RecyclerView时,一切都按预期工作 - 当我接近列表的下限时,会加载新的数据部分。当我们加载了太多数据项(超过配置的maxSize)时,它开始被删除 - 这是预期的行为。但是当我开始向上滚动时,有空的视图持有者没有这些被丢弃项目的任何数据。这意味着适配器项目的数量在清理PagingData. 如何nullPagingDataAdapter? 有没有这方面的API?如果应该自动完成,那么我对 Paging 3 的配置可能是错误的。在这种情况下,我将提供代码。

0 投票
4 回答
2711 浏览

android - 使用 PagingDataAdapter 时如何恢复 recyclerview 滚动位置?

我有一个应用程序,它从 API 中获取158 个项目的列表,将其存储在 Room 中,并将其显示给用户。RoomDB 是事实的来源。

这是从数据库获取结果的 ViewModel 上的代码:

这是填充适配器的片段上的代码:

当前行为:

  • 当我的第 60 项之后发生配置更改时,滚动位置丢失,我发现将我的pagingConfig上的pageSize20增加到55,它解决了这个问题。

我已经尝试过的:

由于我是异步获取数据,因此我尝试使用本文中的这段代码防止在适配器为空时加载数据。但它没有用

我期望达到的目标:

能够滚动到列表底部并在不丢失滚动位置的情况下进行配置更改“而无需在列表变大时增加我的pageSize

https://github.com/doilio/DC-Characters

0 投票
1 回答
1661 浏览

android - Android分页库3如何使用RemoteMediator先从房间加载而不是等待远程响应

我使用带有 Room 和 RemoteMediator 的 Android 分页库 3 实现了一个回收器视图适配器,但我的问题是,在初始加载期间加载列表需要一些时间。如果我从 Room 中删除了仅包含数据源的 RemoteMediator,则列表会立即加载。我想要的是首先从 Room 加载数据,然后只有在到达页面末尾时才从服务器获取并插入数据库。有谁知道该怎么做?

0 投票
1 回答
4188 浏览

android - Android Paging 3 Library (3.0.0-alpha03) - 如何使用快速滚动条启用占位符快速加载 ClosestToCurrentPosition 项目

我正在使用分页 3 库(3.0.0-alpha03),我的本地缓存是 Room(160,000 行)。

当我使用滚动条并拖动到 RecyclerView(GridLayoutManager) 中的特定位置时,如何加快从本地缓存项加载“ClosestToCurrentPosition”?

假设我直接把滚动条拖到150000的位置,“Flow”贴图功能会从0到150000触发,速度极慢,效率不高

我的预期是这样的:当我使用滚动条并拖动到 150,000 时,加载行为将加载大约 154,500~150,500

有人可以帮我看看这个问题吗?或者 Dustin Lam 你能帮我吗?谢谢

编辑:我尝试将数据源包装为跳跃源,但发生了一些奇怪的事情。这是我的跳跃来源

当我将滚动条拖到列表的一半时params.key不断变化(可能是位置 80,000 ,我的数据库数据集行数量是 160,000 如上所述),最后是应用程序 ANR

这是日志

和分页配置

我错过了什么 ?

0 投票
4 回答
1340 浏览

android - Jetpack Paging3 库对同一页面进行多次调用

我正在尝试使用房间数据库作为事实来源和 RemoteMediator 在 codelab之后实现 Jetpack paging 3 库。该应用程序查询谷歌图书 api,但由于某种原因,当我执行搜索时,它会多次调用同一页面。例如,当我在不滚动的情况下搜索火时,我在日志中得到了这个:

我的实现是这样的:

存储库:

远程调解器:

视图模型:

分段:

道:

服务:

如果有人指出我做错了什么并帮助解决这个问题,那就太好了。谢谢

0 投票
1 回答
188 浏览

android - 当列表很大时,Fragment 需要时间加载 RecyclerView

我有一个 RecyclerView 与 Paging 一起实现,以从 Room Database 加载列表。当大小很小时,该列表可以正常工作。当大小达到 50 - 60 左右时,列表仍然可以正常工作,但是当我切换到另一个片段然后返回列表时,它会阻塞 UI 大约 1.5 - 2 秒,这在用户体验中非常沉闷(参见下面的 GIF ):

Recyclerview 问题

我的代码如下:

存储库

适配器

视图模型

分段

主要活动布局

片段帐户布局:

Recyclerview 列表布局

我的分页版本是 2.1.2

有人可以帮我解决这个问题。我尝试了几天寻找修复,但没有任何效果。

我很感激帮助。

0 投票
3 回答
3221 浏览

android - 如何使用 Paging 3 库更新单个项目

我正在尝试使用 Paging 3 库中的 PagingAdapter 找到一种方法来更新回收器视图中的单个项目。我发现只有一种使用 PagingAdapter.refresh() 方法的方法。但是这种方法强制从网络加载所有列表。有人知道如何在不从网络加载所有页面的情况下实现它吗?

0 投票
0 回答
123 浏览

android - Android Paging Library V3 无法处理返回类型

我正在使用分页库 v3,尝试使用 RxRemoteMediator 时出现此错误

这是代码

0 投票
1 回答
170 浏览

android - 为不同的 API 资源创建另一个 PagingSource?

假设我有一个显示/animals动物列表的 API 资源,我们称之为/animals/{species}两个单独PagingSource的对象?用于分页的Codelab有一个扩展PagingSource名为的类GithubPagingSource,但它仅用于一个端点。我想知道正确的方法是什么。

0 投票
1 回答
3405 浏览

android - Paging3:在 Room DAO 中使用 PagingSource 作为返回类型时,“不确定如何将游标转换为此方法的返回类型”

我试图为新的 Paging 3 库模仿 Google 的 codelab,当我尝试让 Room DAO 方法返回时遇到以下错误PagingSource

这是我的UsersDao.kt

我的GithubUser.kt样子是这样的:

在 Paging Codelab 的代码中,DAO 方法只返回一个PagingSource在 Gradle 或其他任何东西中没有额外注释/魔术选项的方法。我还查看了来自 Github 的其他示例,例如使用 Paging 3 库的thisthis,它们完全PagingSource没有问题地返回。如果我错过了什么,谁能告诉我?

注意:在错误本身之前,我总是会收到关于 的警告ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1,但这个警告本身在过去没有引起任何问题,但我在这里注明以防万一。

编辑:我使用以下 Room/Paging lib 版本: