问题标签 [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 投票
0 回答
183 浏览

android-room - 尝试从分页 3 寻呼机内的房间获取寻呼源时出现“无法访问主线程上的数据库”错误

E/ROOM:无法运行失效跟踪器。数据库关闭了吗?java.lang.IllegalStateException:无法访问主线程上的数据库,因为它可能会长时间锁定 UI。在 androidx.room.RoomDatabase.assertNotMainThread(RoomDatabase.java:385) 在 androidx.room.RoomDatabase.query(RoomDatabase.java:441) 在 androidx.room.RoomDatabase.query(RoomDatabase.java:429) 在 androidx.room。 InvalidationTracker$1.checkUpdatedTable(InvalidationTracker.java:461) at androidx.room.InvalidationTracker$1.run(InvalidationTracker.java:431) at androidx.room.InvalidationTracker.refreshVersionsSync(InvalidationTracker.java:513) at androidx.room.paging.LimitOffsetDataSource .isInvalid(LimitOffsetDataSource.java:101) 在 androidx.paging.LegacyPagingSource.(LegacyPagingSource.kt:50) 在 androidx.paging.DataSource$Factory$asPagingSourceFactory$1。

如何解决此错误?

0 投票
1 回答
779 浏览

android - 分页 3 - 如何处理自 beta01 以来出现的旧 APPEND RemoteMediator 请求?

beta01Paging 3 版本开始,在从 a 刷新 PagingData 时,有时会出现刷新完成后仍然执行上一代RemoteMediator的旧请求。APPEND这似乎是从这个 commit读取的预期行为。发生这种情况时,旧APPEND请求会调用RemoteMediator'sload方法,但使用过时的PagingState. PagingState如果我们在加载函数中使用其中的信息(例如,下面的代码片段用于在数据库lastItemOrNull中查找项目),那么这个过时的可能会导致错误和崩溃。RemoteKeys这个突破性的变化(这也打破了相应的代码实验室) 根本没有在发行说明中提及。我们应该如何处理这件事?

这是一个与beta01. 该getRemoteKeyForLastItem方法可以返回null(因为 oldPagingState正在寻找在上一个中删除的数据库条目REFRESH)导致InvalidObjectException抛出 。

0 投票
0 回答
216 浏览

android - 当我在当前活动片段中刷新时,Jetpack Paging 3 RemoteMediator 正在为其他片段调用 LoadType.APPEND

我有一个带有 ViewPager2 的片段(使用 FragmentStateAdapter)。ViewPager 本身拥有动态数量的片段。每个片段用于一类数据。在我打开多个片段并在任何片段(调用)上滑动刷新后PagingAdapter.refresh(),RemoteMediator 按预期清除表并重新加载页面,但它也为其他活动片段调用 LoadType.APPEND,导致这些片段为这些类别加载下一页,并在滚动时产生糟糕的跳跃体验。

我尝试使用最新版本的分页库 - androidx.paging:paging-runtime-ktx:3.0.0-beta01但这也不能解决问题。

任何和所有的帮助将不胜感激。谢谢!

编辑1:没有办法进入refresh()代码,所以我无法弄清楚引擎盖内到底发生了什么。

0 投票
1 回答
1359 浏览

android - 实现分页库 3.0 过滤/搜索功能

使用paging 3.0,我成功实现了它。现在我想给它添加搜索功能。

我只是显示照片库以及分页功能。现在我想在有人搜索时使分页无效

但是每当我在搜索时调用无效。应用程序崩溃..

照片片段.kt

照片片段视图模型.kt

PhotoPagingSourceRx.kt

0 投票
0 回答
151 浏览

android - Android - PagingDataAdapter 折叠/展开

我的应用程序遇到问题,这是要求:

  • 显示长列表,从大型数据库加载。每个项目中的数据是由许多表、许多查询组合而成的。

    → 所以,我想我可以使用 Paging 3 来提高性能并观察数据变化。

  • 显示的列表需要与父项和子列表分层,可以折叠,展开。

    → 如果我使用 Paging 3,如何自定义 PagingDataList 以支持折叠、展开?

不同的方法:

我使用这个库FlexibleAdapter,它支持折叠/展开和粘性标头适配器,但我需要从数据库中加载所有数据,它非常大且性能低下。

请给我一些解决方案。

预先感谢。

截屏

0 投票
1 回答
190 浏览

android - Android Paging 3 我们如何在后台同步数据?

根据This Android Sample using Paging-3with RemoteMediatorload function 仅在没有更多可用数据时触发,但在实时用例中,大多数时间列表可能会更新。那么我们如何在后台同步这些数据以及显示数据库中可用的即时数据,然后再显示同步的数据。根据此示例,在刷新事件发生之前,它永远不会同步新数据。

0 投票
1 回答
187 浏览

android - 如何停止在 Android 中循环相同的回收器视图数据?

在我的 API 中,没有每个产品的 pageSize 或唯一 id,但我仍然在适配器内部实现了 Paging 3 库和比较器,以及用于最新更改的实时数据。

现在的问题是:假设我的 API 中总共只有 10 个项目,我获取它并显示在列表中。但是一旦我滚动 10 个项目,再次显示 10 个项目,并且再次......并且无限!

我怀疑我的 3 个错误,一个是因为分页实现错误(下一个上一个键),或者第二个问题是因为比较器和第三个问题,我覆盖了 getRefreshKey 并通过了 state.anchorPosition。

代码:

产品分页源

产品适配器

0 投票
0 回答
50 浏览

android - 如何使用 Paging 3 库将元数据与分页列表一起传递

我正在使用 Android Paging 3 beta 库在回收器视图中加载分页列表并使用 MVVM 架构。

我需要将其他元数据(例如有关页面的公共信息)传递给视图,但PagingSource.LoadResult.Page的设计方式是仅将项目列表返回给视图。

以下是我想到的几个选项:

  • 使用实时数据独立传递元数据
  • 直接从数据库或内存缓存中读取元数据

最好的方法是什么?还有其他更好的建议吗?

0 投票
1 回答
535 浏览

android - 当手机无法访问互联网时如何使 LoadStateAdapter 工作

有谁知道在应用程序以断开的网络启动的情况下如何显示 LoadStateAdapter ?我正在使用 Paging 3 - 3.0.0-alpha13 (beta-01 在我的实现中丢失了密钥

情况:

将LoadStateAdapter作为页脚添加到PagingDataAdapter

在我们在 LoadStateAdapter 中收到状态(LoadState.Error)情况下,例如在网络丢失的情况下,此状态使“ loaderItem 可见

loaderItem在其基于 loadState 的 displayLoadStateAsItem 方法返回true时显示。默认情况下,当loadState = LoadState.LoadingLoadState.Error时会发生这种情况

  • LoadStateAdapter 添加为页脚监视 loadState。附加
  • LoadStateAdapter 添加为 Header 监视 loadState。前置

如果冷启动的应用程序无法访问网络 RemoteMediator会抛出MediatorResult错误({“无法解析主机... ”})

loadState中的错误“到达” 。调解员loadStaterefresh append 和 prepend 不接收错误具有NotLoading状态 (endOfPaginationReached = false) loaderItem未显示。

冷启动情况下LoadStateAdapter 出现在缓存列表后面的列表末尾时,如何正确获取结果?

ps: 我试图创建我的方法

它没有给出预期的结果,LoadStateAdapter开始收到错误消息但不显示loaderItem

0 投票
0 回答
282 浏览

android - 使用 Paging3 库从图库中获取所有图像

我正在尝试从图库中获取所有图像并将它们显示在回收站视图中。要获取图像,我正在使用 Paging 3 Library。当我从上到下滚动时,一切工作正常我得到所有带有分页的图像,但是当我向上滚动(从下到上)时,我只是陷入了一个循环。Paging3 一次又一次地获取相同的图像。

这是我的加载方法:

这是我的 loadImagesFromStorage 函数:

分页逻辑很简单,我第一次将光标移动到最后一个位置,它将为-1,然后无论页面大小是什么,它都会根据该大小增加。并且 Cursor 获取数据,直到它具有值并且光标位置小于PageSize + Position