问题标签 [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 回答
1605 浏览

android - Paging 3 - 为什么我的重试页脚没有调用我的 PagingSource 的加载方法?

我已经按照代码实验室在我的应用程序中实现了 Paging 3,并通过以下方式添加了一个带有重试按钮的页脚withLoadStateHeaderAndFooter

当我单击页脚 ViewHolder 中的重试按钮时,adapter.retry()确实调用了,所以那里的设置是正确的。load但是,此方法永远不会像通常那样调用我的 PagingSource方法。

我的 PagingSource (我检查了LoadResult.Error在错误情况下是否正确返回):

我的存储库:

在我的片段中,我这样做:

有趣的是,空列表的重试按钮有效:

0 投票
1 回答
89 浏览

android - 我可以在没有“page=number”查询的情况下为 API 使用 Paging3 库吗?

我想知道是否可以将 paging3 库用于在其查询中不支持“page=RANDOM_NUMBER”的 API?例如,我有一个 API,可以在其中添加自定义查询,如“number=50”,结果将显示 50 个项目。我很困惑,如果没有 page=RANDOM_NUMBER 查询,我将无法将该库用于我的 API。有人可以给我答案吗?

0 投票
1 回答
3143 浏览

android - Android Jetpack Paging 3:带 Room 的 PagingSource

我正在使用最新的 Jetpack 库。
Pagination3 版本:3.0.0-alpha05
房间版本:2.3.0-alpha02

我的实体有 Long asPrimaryKey和 Room 可以PagingSource为其他Int类型生成。

因此,我尝试实现我的 custom PagingSource,就像文档建议的那样。

问题是Data Refresh,因为 Room 生成的代码处理数据刷新,而我的代码无法处理这种情况。

任何建议如何实现自定义PagingSourceRoom可以处理Data Refresh

0 投票
1 回答
2330 浏览

android - Android Paging 3 不显示 Loadstate Adapter

我已经按照教程将 Loadstate 适配器添加到 Android Paging 3 上的 Recyclerview 适配器,但目前它没有显示。这就是我更新适配器的方式。

这就是我添加 LoadState 适配器的方式

这是 LoadStateAdapter 的要点,也是Activity 布局加载状态项

适配器工作正常,我还可以通过添加 LoadStateListener 来获取负载状态。只有负载状态适配器不工作。我已经跟踪并克隆了它,它运行良好。我的可能是什么问题?

0 投票
1 回答
488 浏览

android - 如何使用带有 RxSupport 的新 Paging 库 3 实现 Paging 3 的 ItemKeyedDataSource,如 RxPagingSource

实际上,我正在尝试从分页 2 迁移到分页 3。我已经在我的代码库中使用 RxpagingSource 成功实现了分页 2 的 PageKeyedDataSource。但是当我尝试将 Paging 2 的 ItemKeyedDataSource 实现到 Paging library 3 时,我对实现它感到困惑。我也尝试过编码。但卡住了。这是我的代码。

JobSliderRestApi.kt

JobViewResponse.kt

JodSliderDataSource.kt

事实上,以前我使用“currentJodId”来区分第 2 页中的列表。但是在第 3 页中,我没有得到任何解决这些问题的线索

0 投票
3 回答
1706 浏览

android - 如何在 Android 中使用 Paging 3 库显示空视图

当 paging3 加载一个空列表时,我想显示空视图。

它似乎适用于以下代码。这是使用 paging 3 库的正确方法吗?:

0 投票
0 回答
105 浏览

android - 没有 RecyclerView 的 Paging3

我知道 Paging3 库旨在与 RecyclerView 一起使用,但是我有一个用例,其中分页结果也显示在地图上。如果您查看 PagingDataAdapter 类的内部,您会注意到它由 AsyncPagingDiffer 支持。所以现在,我正在尝试使用 AsyncPagingDiffer 类使其工作,该类反过来接收 ListUpdateCallback,以便在发生数据更新时通知 UI。因此,只要 ListUpdateCallback 调度任何更新,我应该能够通过调用 AsyncPagingDiffer.snapshot() 来检索数据。

这个片段很好地说明了我正在尝试做的事情:

但是当试图以这种方式恢复它时,快照总是空的或过期的。换句话说,快照实际上只有在回调已经被通知后才可用,这对我来说是不受欢迎的行为。

我可以确认这种方法适用于 Paging 2(或其他任何名称),但我希望也有一些方法可以将它与 Paging 3 一起使用,因为我不愿意降级 Paging 3 正在进行的其他功能。

0 投票
0 回答
164 浏览

android - Pagin3 - 为什么总是调用 LoadType.REFRESH?

最近我将聊天消息的实现从 Paging2 迁移到 Paging3。使用旧实现,初始消息从DB加载,如果为空,则使用函数onZeroItemsLoaded从 netowkork 加载初始数据束,随后调用onItemAtEndLoadedonItemAtFrontLoaded加载更多数据,使用 Paging3 我们使用 LoadType 进行复制相同的行为。

从调试中我看到每次进入消息视图时都会调用 LoadType.REFRESH 来刷新数据库中的初始数据,是预期的行为吗?如果是这样,如何避免这种情况并且仅在DB为空时才加载初始数据?

注意:我知道我可以检查数据库的状态并决定要做什么,但我正在寻找 Paging3 库解决方案。

0 投票
1 回答
992 浏览

android - Paging3:从其他片段返回时,在适配器上调用 refresh() 不会触发刷新

我正在为我的应用程序使用最新的 Paging3 库,它有一个显示照片列表的画廊屏幕,以及一个显示更多选项和照片信息的详细信息屏幕。我已经设置画廊来获取我的片段中的照片列表onCreate

如果成功,照片会通过 传递给适配器submitList,如果用户拉下画廊屏幕,它应该会触发刷新,所以我refreshListener相应地设置了一个。我这样做onViewCreated(注意我使用 ViewBinding):

首次加载时,下拉布局会成功触发刷新。但是,在我导航到详细信息屏幕后出现问题。在详细信息屏幕中,按返回按钮可将用户返回到图库。如果用户拉动布局,进度指示器会出现但adapter.refresh()不会发生。我不知道如何调试它。

作为参考,这是我ViewModel负责获取照片的人员的样子:

将调用GetAllPhotosUseCase转发到包含以下内容的实现:getAllPhotosRepository

RxPagingSource的设置是这样的:

谁能指出我正确的方向?

编辑:正如 Jay Dangar 所说,移动viewModel.getAllPhotos()onResumeadapter.refresh()成功触发。但是,我不想每次从详细信息屏幕导航到图库时都获取所有照片。为了避免这种情况,我不调用adapter.refresh()布局时调用,而是调用viewModel.getAllPhotos()

我仍然不明白为什么接受的答案有效,但我认为adapter.refresh()只有在PagingSource创建新答案或其他东西时才有效。

0 投票
1 回答
1997 浏览

android - Android Paging 3 库 - 用于从 Room 数据库中分页数据,数据更改时流变为空

我正在尝试使用 android Paging 3(版本 3.0.0-SNAPSHOT)从 Room 数据库(无远程数据源)中分页数据。

最初页面加载数据成功,但是当一个新的“条目”添加到数据库中并且我返回到这个页面时,collectLatest 被触发但没有加载数据(“pagingData”条目列表为空)

这是我的查询:

这是我的视图模型:

在我的片段中,我正在观察这样的数据:

这是我的适配器: