问题标签 [android-paging]

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 投票
5 回答
6957 浏览

android - 如何使用分页库在回收站视图中添加日期分隔符?

经过大量搜索,我知道它可以使用常规适配器,但我不知道如何使用分页库来做到这一点。我不需要代码只是一个线索。

例子

0 投票
1 回答
1967 浏览

android - 为什么这个分页库示例的性能比仅仅一个回收器视图差得多?

所以我一直在阅读 Android 的新分页库。具体来说,我正在尝试使用带有适配器、视图模型和数据源(由改造网络调用支持)的 recyclerview 加载一个永无止境的图像列表(使用 Glide)。

这是基本代码:

但是,我只使用静态项目列表适配器构建了相同的示例,这似乎在我的模拟器上滚动得更顺畅。我的代码中是否缺少某些内容?

以下是我对可能使情况变得更糟的因素的怀疑:

  1. 在这种情况recyclerview.setHasFixedSize(true)下有意义吗?(当我向下滚动然后返回原始图像时,我确实注意到图像的大小不同 - 有没有办法防止这种情况?)
  2. 这是因为一些奇怪的东西DIFF_CALLBACK吗?我其实不太清楚这门课的目的
  3. viewModel.getPhotosList().observe(this, adapter::submitList);预计会更慢,因为它应该使列表无效(与静态列表相比);但是,这是否会导致 5 倍的延迟??!
  4. 我注意到我在模拟器上飞得很快,这在静态回收器视图上似乎不是问题;但是,LivePage 是否为他们的投掷检测做了一些不同的事情?当我扔东西时,屏幕似乎发疯了。换句话说,我感知到的“分页库的锯齿状性能”仅仅是因为我在上下摆动(而不是只是缓慢地上下滚动)吗?
  5. 我只是在某处错过了关键配置设置吗?
0 投票
1 回答
1644 浏览

android - PageList.size 始终为零

实际上,我是Paging Library的新手。这是情况,我正在从我的ViewModel观察PagedList ,即使新闻列表出现在 UI 上,它也总是返回零。

我的数据源是

在这种情况下localNewsList,需要提供新闻的最后一个 id,loadAfter就像

我的 DataSourceFactory 是

ViewModle 是

我认为,我的问题可能与我的数据源用例和我的数据源类型不匹配。所以 PageList 不能按我们预期的那样正常工作。

0 投票
1 回答
4791 浏览

android - 如何在分页库的PagedList中添加项目

我正在尝试在我的应用程序中添加评论功能。就像 Instagram 或 Facebook 一样,评论成功保存到数据库后将添加到评论列表中。我正在使用Android 架构组件(ViewModel、LiveData 和分页库)。

这是我的 ViewModel,我认为我应该更新我的 PagedList

如何正确执行?

评论数据工厂

评论数据源

0 投票
2 回答
11125 浏览

android-architecture-components - 强制分页库数据源刷新

在我的 ViewModel 中,我使用

哪个工作正常。但是,当我的数据更改时,LiveData<PagedList<Notification>>不会收到通知。我可以做些什么来触发LiveData刷新(ViewModel知道何时发生更改)。

0 投票
0 回答
1449 浏览

android - 使用分页库时正确处理“加载更多”视图

我正在探索架构组件套件的分页库。

我的问题是指在使用 Paging 提供的构造时实现“加载更多”视图(微调器)。

我通常会手动实现无限滚动模式。这意味着我通常会向适配器提供一个“视图模型”列表(在架构组件意义上,它们不一定是视图模型,只是代表所有列表项的实体),包括一个可选附加的“加载更多”对象,然后适配器将呈现为“加载”视图。

这种解决方案具有一定的优势,例如更好的可测试性和保持 UI 层尽可能简单和被动,将适配器与任何业务逻辑解耦。

使用 Paging 似乎并不容易。从我所见,您应该将一个PagedList实例流连接到该PagedListAdapter.submitList方法,并且魔术会自行发生。

然后,为了添加一个微调器,您实际上会从视图模型中公开一个“网络状态”,将它单独传递给适配器,并让适配器动态地注入微调器。

这就是示例代码中的操作方式 - https://github.com/googlesamples/android-architecture-components/blob/master/PagingWithNetworkSample/app/src/main/java/com/android/example/paging/pagingwithnetwork/reddit /ui/PostsAdapter.kt

我觉得它有点麻烦,容易出错,而且不是特别优雅。有没有更好的选择,或者这与 Paging 库一样好?

0 投票
2 回答
9753 浏览

android - 修改 Android Paging Architecture 库中的 PagedList

我目前正在考虑将分页架构库(2.1.0-beta01撰写本文时的版本)合并到我的应用程序中。一个组件是允许用户从中删除单个项目的列表。此列表仅限网络,使用 Room 进行本地缓存没有意义。

PagedList是不可变的,不支持修改。我已经读过,拥有一份列表副本,然后修改并作为新列表返回是要走的路。文档声明相同:

如果您有更精细的更新信号,例如网络 API 发出对列表中单个项目的更新信号,建议将数据从网络加载到内存中。然后通过包装内存快照的 DataSource 将该数据呈现给 PagedList。每次内存中的副本更改时,都会使先前的 DataSource 无效,并且可以创建一个包装快照新状态的新数据源。

我目前有基本的推荐实现来显示一个简单的列表。我的DataSource样子是这样的:

文档中引用的内存缓存(没有 Room 并且没有使整个数据集失效)的具体实现是什么样的?

0 投票
3 回答
927 浏览

android - ViewModel 返回 ArrayList 大小为零

我正在使用 AndroidPaging库从我的RecyclerView. 我能够正确查看数据,但是当我打印列表的大小时,它返回零。

以下是我的代码:

Log语句始终打印为零。我想显示一个TextViewif 列表为空,但列表始终返回大小为零。

0 投票
2 回答
7503 浏览

android - 无法使用 android Paging 库加载下一个数据

我正在尝试使用 Room-Paging-LiveData-ViewModel 显示通话记录列表。无需分页,我的代码就可以完美运行。我也想使用分页。

在我的数据库中,我总共有 25 条通话记录。前 9 个通话记录显示在列表中。

通过调试,我发现在通过 读取视图模型中的数据时Dao,它返回大小为 25 的列表。但其中只有前 9 个是非空的。列表中的所有其他条目为空。

我希望空数据会尽快刷新,因为这是一个分页列表。但问题是 null 永远不会用有效数据刷新。

并且视图模型的观察方法只被调用一次,只有第一次。

我想我做错了什么。

这是下面的代码

片段

适配器

视图模型

后来我试着做

到分页列表,如

但是我没有找到合适的方法来转变为那个。

0 投票
1 回答
177 浏览

android - 带有 recyclerView 的 PagingLibrary 无法停止 loadAfter()

即使我没有刷 RecyclerView,loadAfter() 也无法停止。它一直在调用 onBindView->loadAfter()

我尝试调试,找到这些:方法loadAroundInternal in class ContiguousPagedList

索引保持++,而recyclerView中的getBindView更大,appendItem总是> 0

我不确定,但我想也许

然后recyclerView适配器执行onBindView。但是调用了哪个位置的bindViewHolder。所以停不下来。

我不知道我是否正确。我不知道如何解决它。

下面是我写的一些相关代码:</p>

在我自己的扩展PageKeyedDataSource的PagingDataSource中

如果其他事情需要,我会编辑问题

======================================

补充信息:我发现如果我给recyclerView的高度设置一个绝对值,比如100dp,就可以了。但是在 wrap_content 和 match_parent 时会出现问题。

所以现在的问题是:当nestedScrollView中有2个recyclerViews并且带有wrap_content或match_parent时,bindView不能停止loadAfter(),这是一种分页库的方法。