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

android - 从 API 加载数据时 loadInitial() 是否会阻塞

如何在分页库中使用loadInitial ?

我想知道是否可以使用阻塞调用loadInitial()来获取 API 的响应。通过这样做,我可以确保返回的 pagedList 包含第一页。这是使用这种方法的正确方法吗?

在 Google 的示例中,他们以阻塞方式使用 loadInitial()。它在考虑一个好的做法吗?

0 投票
0 回答
795 浏览

android - 加载数据时分页库网络错误

我正在使用分页库,我正在为LiveData PagedList. 我的分页列表工作正常,但有一种情况不是这样。当数据已经显示在列表中并且我禁用网络并且我尝试刷卡刷新列表中的所有数据被删除时,我有RecyclerView+ 。SwipeRefreshLayout我怎样才能避免这种情况?

从片段:

0 投票
1 回答
1155 浏览

android - 分页库使用示例的 Proguard 问题(在 Google Codelabs 中)

我克隆了Android Paging codelabs项目的解决方案分支,然后通过我的 Android Studio (v3.1) 在本地打开它。我在打开它之前所做的唯一更改是修改插件和库的版本代码以使其与我的本地环境兼容:

(编辑:我找到了同一个项目的一个java版本(将kotlin文件转换为)。同样的问题确实存在。所以这个问题与插件或库java无关。)kotlin

  1. gradle-wrapper.properties ( 4.6-all-> 4.4-all):

    /li>
  2. 项目级build.gradle

    /li>
  3. 应用程序模块build.gradle

    /li>

你可以看到我的本地更改(见评论)。删除了其他多余的评论。


然后我将构建变体从Debug更改为Release。一切正常,我可以app-release-unsigned.apk成功构建 APK ( )。现在,当我设置为时minifyEnabledtrue我在构建 APK 文件时遇到了这些错误:

在此处输入图像描述 您可以在本文末尾看到全文样式的错误消息。


我在网上搜索并找到了 Proguard 的这些相关规则(由于依赖关系),并将它们插入proguard-rules.pro文件中(每组规则都引用在它们的顶部):

但是没有效果。错误消息将完全相同。


完整的错误信息

0 投票
0 回答
214 浏览

android - 当recyclerview项目有另一个recyclerview时如何使用分页

我有一个 recyclerview 项目,它包含另一个 recyclerview 来显示图像列表:

如果我在 ViewHolder 中使用分页,我必须像这样调用

}

但它在 ViewHolder 中没有 LifecycleOwner

0 投票
0 回答
619 浏览

android - Android LiveData 和实时更新

最近我迁移到分页库而不是自定义实现。我还使用 Socket.io 进行实时数据获取,所以如果有新数据出现,我会搜索ArrayList模型,修改然后通知适配器已经进行了更改。

我怎么能用分页库做同样的事情(只更新指定的模型)PositionalDataSource

更新 1我找到了访问和编辑数据的方法,但如何通知观察者?

工厂:

数据源:

在片段中初始化:

收到更新时更新值:

0 投票
2 回答
1166 浏览

android - 如何在没有服务器端分页的情况下在android中使用分页?

我从过去 2 天开始就面临这个问题,我无法确定我在这里做错了什么。

情况是:我使用 Retrofit(POST 方法调用)将 2 个参数传递给我的 API,第一个是Token,第二个是CompanyId. 我得到大约 700 多个数据作为列表(JSON 响应)。所以我尝试实现 Android 架构的分页库以从该列表中接收 20 个项目。

然后在加载 20 个项目时,再加载 20 个项目,以便我比平时更快地收到我的回复。

我的假设:我认为我的 API 的服务器页面没有分页。

我的问题是:是否可以在不分页 API 的情况下从 700 多个项目的列表中接收 20 个项目。

每次调用 API 时,加载 700 多个项目都需要花费太多时间。

在这种情况下如何使用分页库?

如果您需要我的任何代码块,您可以在下面的评论中请求。

任何帮助将不胜感激,谢谢。

0 投票
0 回答
151 浏览

android - 带有 CRUD 的 Android 缓存

我正在开发一个社交网络类型的应用程序,用户可以在其中看到“帖子”列表并可以与它们进行交互,特别是他们可以“喜欢”它们。

帖子列表在 10,000 多个,因此我们使用 Android 的分页库(DB + Network)对其进行分页,但这适用于任何需要修改缓存对象的情况。

加载和分页列表效果很好,反应灵敏,内置动画很好。问题是当用户喜欢一个帖子时。为了喜欢一个帖子,列表项上有一个按钮。当用户喜欢(或“不喜欢”)帖子时,按钮的图标会发生变化,“喜欢计数”会相应地增加或减少,我们必须调用适当的 Web 服务。这都是基本的社交网络东西,看起来很简单,但我正在努力正确有效地更新数据。到目前为止,我提出了三种可能性,但它们都很糟糕:

  1. 发出请求并接收更新的对象,然后将其重新插入数据库。这很简单,并且可以确保数据正确,但这意味着用户必须等待请求返回,然后再刷新 UI,这通常会导致用户在图像上单击多次(执行多个请求)。所以几乎没用。
  2. 修改 UI(列表项视图更新其视觉状态)但不修改后备数据,然后发出请求并将结果插入数据库。这是一个巨大的 PITA,因为它会导致视觉状态不同步,因此如果用户在请求完成之前滚动并返回,他们将看到原始状态。我还必须将错误传达回视图,以便它可以恢复其状态。
  3. 修改内存中的对象(更改点赞数和类似用户帖子的关系),制作原始副本,将其重新插入数据库,发出请求,然后将更新后的对象从 Web 服务或原始对象插入错误的情况。这提供了即时的视觉反馈并保持了数据的完整性,但只是稍微少了一点 PITA。

所以目前我选择 3 因为它似乎是最好的,但我想知道是否有更好的方法来处理这个问题?似乎我正在为这样一个基本功能而努力,这个问题肯定已经解决了一百万次了吗?我不习惯在 CRUD 系统上使用缓存(我已经为只读数据实现了基本缓存),但修改缓存的障碍比我预期的要大。

0 投票
1 回答
802 浏览

android - 使用分页架构组件调试分页

因此,我使用分页库LiveData和 Room 数据库编写了一个简单的注释功能,但我没有看到它实际上对任何内容进行分页。也许我没有正确调试以确认分页正在发生。任何建议表示赞赏。

在我的 DAO 中:

然后在我的 中NotesRepository,我从NoteEntityto转换Note为保持我的数据层实现细节和应用程序的其余部分分开(我是 Clean Architecture 的粉丝)。所以结果是DataSource.Factory<Int, Note>

在我ViewModel那里PAGE_SIZE是 20:

Note的很简单:

然后我在RecyclerView.

我的ViewHolder包含:

我的Adapter包含:

我的Fragment包含:

RecyclerView 中的数据加载成功,每个项目绑定时我都看到了调试日志。我的理解是,当用户滚动并通过计算后台线程上的差异来PagedListAdapter处理新页面时,我使用请求新页面。PagedList

我的数据源包含 100 个项目,因此我希望在页面大小为 20 的情况下,在平均大小的手机上进行测试时会进行 5 次数据调用。

如何调试它以确保正确的调用次数?此外,在上面的实现中,是否默认使用其中之一(PositionalDataSource、ItemKeyedDataSource 或 PageKeyedDataSource)?

0 投票
2 回答
1157 浏览

android - 如何使用列表大小与 Room 数据库返回的列表大小不同的 AAC 分页库

我正在尝试使用新的Paging LibraryRoom作为数据库,但我遇到了一个问题,PagedList数据库返回的列表不应该与发送到 UI 的列表相同,我map在向用户显示之前和在此map操作期间有一些实体我更改了列表大小(添加项目),显然Paging Library不支持这种操作,因为当我尝试运行应用程序时出现此异常:

查看分页库源代码,您会看到此方法:

当您在使用它之前添加动态项目时,是否有解决方法或需要处理的东西PagedList

这就是我正在做的

本地资源

0 投票
0 回答
516 浏览

android - SearchView 使用 PageKeyedDataSource 不显示任何结果甚至错误

我正在尝试在搜索请求来自后端 api 的数据的片段内创建一个 searchview,结果是分页的,所以我使用 PageKeyedDataSource 在回收器视图中显示结果。因此,当我执行搜索查询时,它没有显示任何结果,甚至没有任何错误或警告

如果我的代码有任何问题,请帮助我!!1 我被困在这里好几个星期了!!!

用户界面代码:

适配器:

视图模型:

数据源:

数据源工厂: