问题标签 [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.
android - 使用 Android Paging 库实现包含多个视图类型的 RecyclerView
我的目标是用至少两种不同类型的数据填充回收站视图。回收器视图的第一项是另一个可以水平滚动的回收器视图。其余项目可以垂直滚动。数据由房间数据库支持,作为由网络数据支持的单一事实来源。我查看了 android 官方示例和代码实验室。但无法理解如何为多个视图创建分页列表以及如何通过 PagedListAdapter 显示它们。如果我不够清楚,请询问有关该部分的问题。图片样本:https ://i.stack.imgur.com/6wZ7j.png
android - 在Android中检测空的PagedList结果
我正在使用 Android Jetpack 中的Paging库在我的 RecyclerView 中进行分页加载行为。现在我想要一个简单的事情 - 在我的 UI 中获得一个没有数据且列表为空的信号,这样我就可以显示“没有项目”之类的消息。
问题是我PositionalDataSource
没有使用占位符,因为我不知道列表会有多大。另一个问题是我只能PagedList
从DataSource
.
所以问题是 - PagedList
or是否DataSource
会发出“我已完成加载”之类的信号?该事件在库中明确定义,因为一旦获得的数据少于要求的数据,它将停止加载,如此处所述:返回的数据必须是这个大小,除非在列表末尾。问题是——我能以某种方式得到那个事件的信号吗?
现在我看到以下解决方案。我已经实现了我DataSource.Factory
在此页面中显示的 Android 指南中的内容:将我DataSource
的作为LiveData
工厂分发。LiveData
此外,我已经从DataSource
被调用的对象中暴露了一个对象isLoading
,我在 UI 中使用它来在每次DataSource
加载某些内容时显示一个进度条。我正在考虑添加另一个LiveData
调用emptyResults
,然后我可以在我的 UI 中将两者连接在一起,以便在emptyResults && !isLoading
.
我想知道是否有更好的方法来做到这一点。
android - 无效的自定义 PageKeyedDataSource 使回收器视图跳转
我正在尝试使用自定义 PageKeyedDataSource 实现一个 android 分页库,该数据源将从数据库中查询数据并在该页面上随机插入广告。
我实现了分页,但是每当我滚动到第二页并使数据源无效时,回收器视图就会跳回到第二页的末尾。
这是什么原因?
数据源:
边界回调
适配器的 DiffUtil
视图模型
android - Android RecyclerView 滚动时无法正确计算 TextView MeasuredHeight
这可能是stackoverflow中关于Android RecyclerView的最常见问题,但我在任何地方都找不到任何合适的解决方案来满足我的要求。
我的问题
我正在使用带有 Room Database 和 Retrofit 的分页库来填充 Recyclerview 中的内容。有两个 VIEW_TYPE;一个是卡片视图中的实际数据,另一个是进度条布局,当调用 API 以获取下一组数据时,它会显示在 Recyclerview 的底部。列表中的每个卡片视图都相当复杂,包含图像和文本。
一切正常,直到我在内容混乱时开始向上滚动。准确地说,一个 textview 需要根据另一个 textView 的测量高度来显示。在我向下和向上滚动后,测量的高度没有正确显示。图片截图附在下面
我发现几乎每个人都建议有 2 个解决方案。
覆盖适配器中的 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; } }
在 ViewHolder 中使用setIsRecyclable(false)
~ 如果我使用这个解决方案,它可以解决我的问题,但我不想使用它,因为这违背了 Recyclerview 的全部目的,并且在有大数据集时会严重影响性能。
我的代码
问题
我们可以使用什么替代方案来解决这个古老的 Recyclerview 问题?
更新 -
唯一的问题是“显示更多”文本视图可见性是由 postBody 文本视图测量的高度计算的。向下然后向上滚动后,无论文本内容如何,Textview 的测量高度总是相同。
相同的逻辑如下:
android-recyclerview - 滚动到分页库中的某个位置
我想滚动到使用 pagedlist 适配器的 recyclerview 中的一个位置,但问题是我要滚动到的位置尚未加载,因此无法使用 layoutmanager.scrollToPostion() 滚动到该位置
并且我的回收站视图禁用了占位符,因为项目大小不同
我正在使用房间持久性数据库库获取数据
请谁能帮我解决这个问题
android - 不要在 PagedList 失效时清理 RecyclerView
我正在使用来自 Android Jetpack的PagingRecyclerView
库在我的. 我直接从网络加载,所以我没有任何中间内存缓存或数据库。每当发生变化时,我都会调用(invalidate()
在DataSource
我的情况下PositionalDataSource
),以便刷新列表。
我需要的是非常简单的东西——一旦我调用invalidate()
回收站视图就会被完全清理并显示空数据。我需要回收站视图来保留旧数据并在新数据进入后正常更新。在大多数情况下,更新可能非常小,例如按钮颜色在几行中发生变化,当RecyclerView
显示空内容时看起来很丑在我从后端加载数据的几秒钟内。
这可以以某种方式完成,还是当前分页库架构的概念限制迫使我实现自己的缓存?
android - 如何在 Android 中使用 Paging 获取联系人列表
我正在尝试使用分页库在 RecyclerView 中显示具有搜索功能的联系人。https://github.com/anujmiddha/paged-list-demo我关注这个 GitHub 项目。以下是我项目中的代码片段。我正在尝试使用 pagedList 适配器逐渐获取联系人。但是这个 LIMIT 和 OFFSET 在某些 Android 版本(例如 Android 9.0)中无法正常工作。有没有其他选择?
另外,我尝试了另一种方法,如下所示。
但没有什么对我有用..
java - 如何从 pagedList 中删除项目
嗨,我正在使用 mvvm 和分页库。分页工作完美。
我想从列表中删除项目。
当我尝试删除项目时
我的活动
android - Android分页库在失效时将列表滚动到顶部
我是分页库的新手,每当我使数据源无效时,分页会将列表带到顶部。我正在搜索他们所说的各种博客loadInitial
,loadRange
应该从启动它的线程中调用,但在我的情况下,我在我的应用程序中使用协程,但我在不使用协程的情况下尝试了这种行为,一切正常。
数据源
数据源工厂
视图模型
谁能建议我如何实现这一目标?
android - Android 分页库 - 将 Room DataSource.Factory<*, DatabaseModel> 映射到 DataSource.Factory<*, PresenterModel>
我在我的应用程序中使用了两个模型:
- 数据库
- 演示者(用户界面)
Android Paging 给了我一个DataSource.Factory<*, DatabaseModel>
当我想LiveData
使用时,LivePagedListBuilder(dataSourceFactory, config)
我需要映射:
DataSource.Factory<*, DatabaseModel>
-|---->DataSource.Factory<*, PresenterModel>
有没有办法实现这一点。我也对使用 RxKotlin (RxJava) 完成的任何方法持开放态度。