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

android - 使用 Android Paging 库实现包含多个视图类型的 RecyclerView

我的目标是用至少两种不同类型的数据填充回收站视图。回收器视图的第一项是另一个可以水平滚动的回收器视图。其余项目可以垂直滚动。数据由房间数据库支持,作为由网络数据支持的单一事实来源。我查看了 android 官方示例和代码实验室。但无法理解如何为多个视图创建分页列表以及如何通过 PagedListAdapter 显示它们。如果我不够清楚,请询问有关该部分的问题。图片样本:https ://i.stack.imgur.com/6wZ7j.png

0 投票
1 回答
694 浏览

android - 在Android中检测空的PagedList结果

我正在使用 Android Jetpack 中的Paging库在我的 RecyclerView 中进行分页加载行为。现在我想要一个简单的事情 - 在我的 UI 中获得一个没有数据且列表为空的信号,这样我就可以显示“没有项目”之类的消息。

问题是我PositionalDataSource 没有使用占位符,因为我不知道列表会有多大。另一个问题是我只能PagedListDataSource.

所以问题是 - PagedListor是否DataSource会发出“我已完成加载”之类的信号?该事件在库中明确定义,因为一旦获得的数据少于要求的数据,它将停止加载,如此所述:返回的数据必须是这个大小,除非在列表末尾。问题是——我能以某种方式得到那个事件的信号吗?

现在我看到以下解决方案。我已经实现了我DataSource.Factory此页面中显示的 Android 指南中的内容:将我DataSource的作为LiveData工厂分发。LiveData此外,我已经从DataSource被调用的对象中暴露了一个对象isLoading,我在 UI 中使用它来在每次DataSource加载某些内容时显示一个进度条。我正在考虑添加另一个LiveData调用emptyResults,然后我可以在我的 UI 中将两者连接在一起,以便在emptyResults && !isLoading.

我想知道是否有更好的方法来做到这一点。

0 投票
2 回答
1101 浏览

android - 无效的自定义 PageKeyedDataSource 使回收器视图跳转

我正在尝试使用自定义 PageKeyedDataSource 实现一个 android 分页库,该数据源将从数据库中查询数据并在该页面上随机插入广告。

我实现了分页,但是每当我滚动到第二页并使数据源无效时,回收器视图就会跳回到第二页的末尾。

这是什么原因?

数据源:

边界回调

适配器的 DiffUtil

视图模型

0 投票
0 回答
192 浏览

android - Android RecyclerView 滚动时无法正确计算 TextView MeasuredHeight

这可能是stackoverflow中关于Android RecyclerView的最常见问题,但我在任何地方都找不到任何合适的解决方案来满足我的要求。

我的问题

我正在使用带有 Room Database 和 Retrofit 的分页库来填充 Recyclerview 中的内容。有两个 VIEW_TYPE;一个是卡片视图中的实际数据,另一个是进度条布局,当调用 API 以获取下一组数据时,它会显示在 Recyclerview 的底部。列表中的每个卡片视图都相当复杂,包含图像和文本。

一切正常,直到我在内容混乱时开始向上滚动。准确地说,一个 textview 需要根据另一个 textView 的测量高度来显示。在我向下和向上滚动后,测量的高度没有正确显示。图片截图附在下面

我发现几乎每个人都建议有 2 个解决方案。

  1. 覆盖适配器中的 getItemViewType(int position) 并返回位置

    ~ 我不能使用这个解决方案,因为我必须保留 2 个 VIEW_TYPES。我的 getItemViewType 代码如下:

    public int getItemViewType(int position) { if (hasExtraRow() && position == getItemCount() - 1) { return R.layout.item_network_state; } else { return R.layout.card_post_timeline; } }

  2. 在 ViewHolder 中使用setIsRecyclable(false)

~ 如果我使用这个解决方案,它可以解决我的问题,但我不想使用它,因为这违背了 Recyclerview 的全部目的,并且在有大数据集时会严重影响性能。

我的代码

问题

我们可以使用什么替代方案来解决这个古老的 Recyclerview 问题?

更新 -

唯一的问题是“显示更多”文本视图可见性是由 postBody 文本视图测量的高度计算的。向下然后向上滚动后,无论文本内容如何,​​Textview 的测量高度总是相同。

相同的逻辑如下:

0 投票
0 回答
477 浏览

android-recyclerview - 滚动到分页库中的某个位置

我想滚动到使用 pagedlist 适配器的 recyclerview 中的一个位置,但问题是我要滚动到的位置尚未加载,因此无法使用 layoutmanager.scrollToPostion() 滚动到该位置

并且我的回收站视图禁用了占位符,因为项目大小不同

我正在使用房间持久性数据库库获取数据

请谁能帮我解决这个问题

0 投票
1 回答
257 浏览

android - 不要在 PagedList 失效时清理 RecyclerView

我正在使用来自 Android Jetpack的PagingRecyclerView库在我的. 我直接从网络加载,所以我没有任何中间内存缓存或数据库。每当发生变化时,我都会调用(invalidate()DataSource我的情况下PositionalDataSource),以便刷新列表。

我需要的是非常简单的东西——一旦我调用invalidate()回收站视图就会被完全清理并显示空数据。我需要回收站视图来保留旧数据并在新数据进入后正常更新。在大多数情况下,更新可能非常小,例如按钮颜色在几行中发生变化,当RecyclerView显示空内容时看起来很丑在我从后端加载数据的几秒钟内。

这可以以某种方式完成,还是当前分页库架构的概念限制迫使我实现自己的缓存?

0 投票
0 回答
725 浏览

android - 如何在 Android 中使用 Paging 获取联系人列表

我正在尝试使用分页库在 RecyclerView 中显示具有搜索功能的联系人。https://github.com/anujmiddha/paged-list-demo我关注这个 GitHub 项目。以下是我项目中的代码片段。我正在尝试使用 pagedList 适配器逐渐获取联系人。但是这个 LIMIT 和 OFFSET 在某些 Android 版本(例如 Android 9.0)中无法正常工作。有没有其他选择?

另外,我尝试了另一种方法,如下所示。

但没有什么对我有用..

0 投票
1 回答
186 浏览

java - 如何从 pagedList 中删除项目

嗨,我正在使用 mvvm 和分页库。分页工作完美。

我想从列表中删除项目。

当我尝试删除项目时

我的活动

0 投票
0 回答
54 浏览

android - Android分页库在失效时将列表滚动到顶部

我是分页库的新手,每当我使数据源无效时,分页会将列表带到顶部。我正在搜索他们所说的各种博客loadInitialloadRange应该从启动它的线程中调用,但在我的情况下,我在我的应用程序中使用协程,但我在不使用协程的情况下尝试了这种行为,一切正常。

数据源

数据源工厂

视图模型

谁能建议我如何实现这一目标?

0 投票
1 回答
680 浏览

android - Android 分页库 - 将 Room DataSource.Factory<*, DatabaseModel> 映射到 DataSource.Factory<*, PresenterModel>

我在我的应用程序中使用了两个模型:

  1. 数据库
  2. 演示者(用户界面)

Android Paging 给了我一个DataSource.Factory<*, DatabaseModel>

当我想LiveData使用时,LivePagedListBuilder(dataSourceFactory, config)我需要映射:

DataSource.Factory<*, DatabaseModel>-|---->DataSource.Factory<*, PresenterModel>

有没有办法实现这一点。我也对使用 RxKotlin (RxJava) 完成的任何方法持开放态度。