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

android - 显示带有 android 分页库的进度条

我正在使用分页库和房间,使我的房间数据库成为我的应用程序的单层真实性。当使用改造从服务器完成获取时,我将结果本地保存在数据库中,然后我使用分页库从数据库获取数据。我正在使用BoundaryCallback


当数据库中没有项目或用户滚动到最后一个项目时,我调用requestAndSaveData()从服务器获取数据并将其保存到数据库中的方法。

我的问题是如何在从服务器加载下一页并将其保存到数据库时在列表底部显示进度条,因为它可能需要很长时间?

0 投票
2 回答
4536 浏览

android-architecture-components - 不使用 Room 更新 PagingLibrary 中的列表项(仅限网络)

我正在使用分页库从网络加载数据ItemKeyedDataSource。获取项目后,用户可以对其进行编辑,此更新在内存缓存中完成(不使用像 Room 这样的数据库)。

现在,由于PagedList自身无法更新(在此处讨论),我必须重新创建PagedList并将其传递给PagedListAdapter.

更新本身没有问题,但是在recyclerView用 new更新之后PagedList,列表会跳转到列表的开头,从而破坏先前的滚动位置。无论如何在保持滚动位置的同时更新 PagedList (就像它如何与Room一起工作)?

DataSource是这样实现的:

像这样创建的PagedList

PagedListAdapter是这样创建的:

,并像这样更新:

PS:如果有更好的方法在不使用 Room 的情况下更新列表项,请分享。

0 投票
3 回答
7866 浏览

android-recyclerview - PagedListAdapter 在接收到新的 PagedList 时跳转到列表的开头

我正在使用分页库从网络加载数据ItemKeyedDataSource。获取项目后,用户可以对其进行编辑,此更新在内存缓存中完成(不使用像 Room 这样的数据库)。

现在,由于PagedList自身无法更新(在此处讨论),我必须重新创建PagedList并将其传递给PagedListAdapter.

更新本身没有问题,但是在recyclerView用 new更新之后PagedList,列表会跳转到列表的开头,从而破坏先前的滚动位置。无论如何在保持滚动位置的同时更新 PagedList (就像它如何与Room一起工作)?

DataSource是这样实现的:

像这样创建的PagedList

PagedListAdapter是这样创建的:

,并像这样更新:

0 投票
0 回答
513 浏览

android - 在 PagedList.BoundaryCallback 中报告网络错误

我有一个以数据库(房间)作为单一事实来源的工作分页机制。我也将改造作为网络库,我使用 RxPagedListBulder 来保持所有东西的绑定和运行。

但是,我找不到将我的响应传回给视图的方法,因为网络内容以在成功的情况下插入数据库结束。我找不到报告网络错误的方法,并且可用教程中没有很好地解决该主题

对于那些想要完全理解这个问题的人,可以在github repo上找到工作代码。边界回调在这里

0 投票
3 回答
9313 浏览

android - 用于多个数据源的分页库 DataSource.Factory

新的分页库允许我们指定用于数据分页的自定义数据源。github 上的分页库文档和示例代码向我们展示了如何通过创建 DataSource.Factory 的子类来创建自定义数据源实例,如下所示:

在一个真实的应用程序中,您通常会有多个带有 recyclerviews 的视图,因此有多个自定义数据源。那么,您最终是为每个数据源创建多个 DataSource.Factory 实现,还是有更通用的解决方案?

0 投票
0 回答
457 浏览

android - Android中的PagedListAdapter如何决定列表的顺序?

android 引入了一个新组件,可以更轻松地实现分页列表。在阅读有关如何使用PagedListAdapter的教程时,我仍然不明白。如果DiffUtil.ItemCallback实现了在列表中正确放置行,如何PagedListAdapter知道要显示的项目的顺序?我看到这个例子只调用submitList(). 假设查询中没有该示例ASC

我认为使用的好处PagedListAdater是将项目放置在任何位置,就像谷歌展示的那样在此处输入图像描述

另一个问题是我们如何处理配置更改(如设备旋转)?谷歌提供的示例似乎并没有在任何地方保留数据副本。它从数据库中获取数据,向所有观察者发出信号,然后将新的数据列表直接传递给PagedListAdapter. 除非适配器可以在设备旋转期间存活。

0 投票
2 回答
1503 浏览

android - 如何将 PagedListAdapter 与多个 LiveData 一起使用

我有一个带有PagedListAdapter的回收站视图。

onCreate我有这个代码:

最近的照片是这样初始化的:

它工作正常。

接下来,我有search()功能:

viewModel.searchPhotos看起来像这样:

但它不起作用。我有一个错误:

我的问题是我可以为多个/不同的 LiveData 使用一个回收器视图和一个适配器吗?当我有一个回收器并且我需要将它用于最近的项目或搜索时,我的任务的最佳解决方案是什么?

0 投票
1 回答
8019 浏览

java - Android Paging Library 如何知道加载更多数据?

我对开发 Android 应用程序相当陌生,我正在尝试“以正确的方式”做所有事情。所以现在,我正在将新的 Android 分页库实现到我的项目中,我需要从网络服务器加载文章列表。

我有一个ArticlesRepository类,它返回一个包含我想在 RecyclerView 中显示的ArticleList实例的类。ArticleListItem文章列表已经在服务器上进行了分页,因此存储库发送一个对第一页的请求,并返回一个属性设置为和属性包含所请求页面上的文章ArticleList的属性。我不知道一页能写多少篇文章。page1articlesList<ArticleListItem>

现在,我能够实现 a PageKeyedDataSource<Integer, ArticleListItem>,但它只获取第一页:

previous/next函数返回Integer带有上一页/下一页页码的或如果null没有。

在我的 ViewModel 中,我像这样配置 PagedList:

这样我就可以加载第一页,但是当我滚动到 RecyclerView 的底部(即在 NestedScrollView 内)时,什么也没有发生。调试显示该PageKeyedDataSource.loadAfter方法没有被调用。

我是否必须以某种方式告诉 PagedList 必须加载下一页,还是 RecyclerView/DataSource/GodKnowsWhatElse 的工作而我只是做错了什么?感谢您的任何建议。

0 投票
3 回答
1907 浏览

android-paging - 使用 PagedListAdapter 时对数组项进行排序?

我正在使用分页库

目前,我想通过 PagedListAdapter 中的描述对项目进行排序(使用SortList),但我还没有弄清楚如何去做。

使用 PagedListAdapter 时如何对元素进行排序?谢谢你。

0 投票
1 回答
433 浏览

android - Jetpack 分页库返回所有数据

目前,我正在尝试实现 android jetpack 提供的分页库。但是我在从 DAO 获取数据时遇到了一些麻烦。实际上,当我获取数据时,PagedList表中所有行的大小!

这是我的 DAO:

我试图满足这个测试:

我不知道我是否遗漏了一些上下文,但我想要实现的是数据的渐进式加载。任何帮助/解释将不胜感激。