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

android - dataSource.inValidate() 不工作分页库

我正在使用具有 MVP 架构的分页库。数据源是在交互器中创建的,我试图使片段中的数据源无效,如下所示。

我的片段

我的PresenterImpl

MyInteractorImpl

但问题是,当数据源失效时,什么也没有发生。我需要重新获取滑动中的列表以刷新。任何帮助将不胜感激。

PS 我找不到任何将分页库与 MVP 结合使用的示例,因此我自己实现了它。如果我在这里做错了什么,请告诉我。

0 投票
0 回答
311 浏览

android - Android Paging Library - loadInitial() 和 loadAfter() 同时运行,无需滚动 recyclerview

例如 :

PagedList.Config.Builder().setInitialLoadSizeHint(25).setPageSize(25)。

应用程序同时加载初始数据和加载附加数据。我不知道如何解决它。

来自控制台的日志:

D/OkHttp: --> GET https://api.github.com/users/google/repos?page=0&per_page=25 D/OkHttp: --> GET https://api.github.com/users/google/repos?page=25&per_page=25

0 投票
1 回答
1745 浏览

android - 如何使 PagedList 或 DataSource 中的数据子集无效?

在 Android分页库中,如何使 PagedList 或 DataSource 中的数据集子集无效?我写 PagedList 或 DataSource 是因为我不知道应该调用哪一个。

例如,我正在制作一个名为BufferOverflow的 QA 应用程序。

我有一个PageKeyedDataSource通过网络加载数据。它支持通过 API 上的索引进行分页。在那个应用程序中,我有一个热门问题屏幕,其中包含“无限”的热门问题列表。当然,最重要的问题会定期更新。

如何:

  1. 更新第 1 页的数据集?
  2. 在第 10 页更新数据集?

我知道使用 PagedList 的好处是它会计算哪个项目是新的/旧的,使用DiffUtil. 但是,我如何告诉它数据集上的某些keyposition已更改?

我问的是不可能的吗?我应该自己实现自定义分页行为吗?


笔记:

  1. 我不想使所有数据无效。

adapter.getCurrentList().getDataSource().invalidate();

这将使数据源上的整个数据无效。虽然我只想使数据的某些部分无效。

  1. 我认为我正在寻找的 API 类似于 RecyclerView.Adapter 的

list.adapter.notifyItemChanged(0);

但当然,更新数据集不是适配器的责任。它在PagedListDataSource或 Dao 类中。

0 投票
5 回答
7400 浏览

android - 如何清除/删除页面列表适配器中的所有项目

我正在使用 android 分页库来显示搜索结果项目,有什么方法可以清除/删除所有加载的结果项目,在实时分页列表上调用 Invalidate 刷新列表不清除/删除项目

0 投票
1 回答
614 浏览

android - 分页库自定义数据源从不触发 loadBefore

我正在尝试使用 Paging Library 实现聊天应用程序,但我的 DataSource 从不触发 loadBefore 和 loadAfter,而是触发 loadInitial,我可以在 RecyclerView 中显示初始数据。我也在用房间。我搜索了一些教程,但没有一个能帮助我解决这个问题。

有谁能够帮我?

谢谢!

聊天数据源工厂.kt

聊天数据源.kt

聊天视图模型.kt

聊天片段.xml

0 投票
1 回答
1693 浏览

android - 更新 recylerview 中的单个项目。我正在使用分页库并想更新单个项目/行

我正在使用提交列表将 pagedlist 值传递给适配器。当我更新单个项目时,请考虑我正在单击 recyclerview 中提要的点赞按钮。如何更新单个项目。

我正在按照这个例子进行分页实现

https://github.com/saquib3705/PagingLibrarySampleApp

它只是加载数据并更新recyclerview。我想为项目添加点赞按钮,并在用户喜欢如何实现它时更新列表。还要看看这个,这正是我正在寻找的 更新 PagingLibrary 中的列表项,不使用 Room(仅限网络)

0 投票
1 回答
2749 浏览

android - Android Paging Library - 更新当前页面上的数据

我正在使用 Android Jetpack 的新 Paging 库来显示从 API 接收到的项目列表。我希望每隔几分钟刷新一次当前页面(比如第 3 页)上的数据,而无需使用 invalidate() 函数刷新整个列表,因为这会将 Recycler 视图带到其第一页。

我在这里看到的问题是分页库假设数据是不可变的。

https://developer.android.com/reference/android/arch/paging/DataSource#updating-paged-data

在谷歌上搜索,我可以看到解决方法是使用 Room 并根据 API 调用的数据库更新显示 UI。

有没有其他建议可以在不使用本地商店的情况下解决这个问题。

0 投票
0 回答
163 浏览

android - 如何在 ItemKeyedDataSource.LoadInitialParams 中使用 requestedInitialKey

我正在学习 android 分页库,一切正常。但是,每当我使 DataSource 无效时,只要将新项目添加到列表顶部,列表就会跳转到起始位置。我想将项目添加到列表顶部。但列表应保持在其当前滚动位置。我想我应该使用无效时不为空的 LoadInitialParams.requestedInitialKey 。但我不确定如何使用此键加载数据以避免列表跳转到起始位置。

我正在使用 firestore 数据库作为数据源。我发现提供给回调的 requestedInitialKey 实际上是当前滚动位置的 recyclerview 中的最后一个可见项。我已经尝试了以下方法来获取 requestInitialKey 周围的数据

其中 25 是我的页面大小。以上都没有解决问题。有人可以为我提供一个示例,以便列表将保持在其当前滚动位置仅更新内容而不跳转开始?

0 投票
1 回答
187 浏览

android - 如何向 Room 支持的 pagedList 添加新项目?

我在我的应用程序中使用网络 + 数据库进行分页。我有 2 个扩展相同类型的模型类。Room 数据库仅支持一种类型的模型。我想PagedList根据一些业务规则在两者之间注入其他模型类。当我尝试通过使用Room 返回的mapByPage函数来做到这一点时。DataSource.Factory分页库正在抛出IllegalStateExeception大小已更改的消息。我该如何实施这个案例?

0 投票
1 回答
680 浏览

android - 房间分页库总是返回 null LiveData?

我正在尝试在我的项目中使用分页库,但是当我尝试接收LiveData<PageList<Entity>> data它时,它的值始终为空。我的实现如下所示:

视图模型

数据变量始终为空。