问题标签 [android-architecture-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 投票
0 回答
2649 浏览

android - 分页 PageKeyedDataSource 滑动以刷新调用 loadInitial

我正在关注https://github.com/googlesamples/android-architecture-components/tree/master/PagingWithNetworkSample 我注意到当分页刷新时,滑动刷新,调用 invalidate() 并调用 loadInitial 然后加载新列表。因此,如果我一次又一次地调用刷新,它总是会下载初始数据。对我来说,我想通过传递上一个键来刷新页面,然后在只有新项目可用时更新。但是现在分页库似乎不支持这个用例。

0 投票
2 回答
4536 浏览

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

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

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

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

DataSource是这样实现的:

像这样创建的PagedList

PagedListAdapter是这样创建的:

,并像这样更新:

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

0 投票
1 回答
684 浏览

android - Android架构组件分页DataSource.Factory报错

我正在尝试DataSource.Factory上课,但在尝试返回我的PageKeyedDataSource实现时出现错误。

}

现在这里是我的工厂:

在上述create()方法中返回我的 DataSource 时,AndroidStudio 给了我一个 IDE 错误:

我要疯了吗?PageKeyedDataSource从中延伸出来ContiguousDataSource的是 a DataSource。为什么我得到类型不匹配?我检查了分页库的 2 个不同示例,它们的实现与我的完全一样。除非我错过了什么???

0 投票
1 回答
4124 浏览

android - LiveData:AndroidX 重构后无法在后台线程上调用 observeForever

重构为 androidx(通过 AndroidStudio)后,我的分页库中的 PageKeyedDataSource 因此错误而中断:

代码:

由于 PageKeyedDataSource 默认在后台执行并且依赖于 LiveData 我想知道为什么这会在 LifeData 2.0.0 版(AndroidX 重构)中中断。这是一个错误,有没有办法让它再次工作?

0 投票
0 回答
124 浏览

android - PagedList.BoundaryCallback 在 DB + Network 中没有更新

我是 Android Paging 的新手(不要拍我),我正在尝试使用 Database 和 Network 来实现 Paging,比如android sample

我在片段中观察我的 ViewModel 的 getPagedList() ,然后我将列表提交给我的适配器,如下所示:

这是我的 ViewModel 以及我如何创建 PagedList:

这是我的 BoundaryCallback:

附加信息:

  1. repository.requestFetch() 从 Web 服务请求某个页面,并且响应将插入到数据库(Room)中。如果响应是针对第一页的,则在插入新数据之前将删除所有旧数据。

  2. repository.getCurrentList() 返回由数据库 dao 创建的 DataSource.Factory

问题是,当我刷新列表时,BoundaryCallback 中的变量没有更新,这意味着“currentPage”继续增加,并且它没有重置为 1(显然,每次调用 initPagedList 都会创建一个新的 BoundaryCallback)。无论如何,我不知道我在这里缺少什么,任何帮助将不胜感激。

0 投票
1 回答
256 浏览

android - Android Paging 库 sqlite 数据存储关注

在过去的几天里,我对Android 架构组件感到很熟悉,并且我对用于处理和显示来自远程源的数据列表的分页库最感兴趣。为了获得最佳的用户体验,最好先将数据加载到数据库中,在这种情况下,Room然后使用 pagingLibrary 和适配器将其显示在 recyclerview 中。我担心的是,假设一个 api 甚至有 1000 条记录或一个 twitter 提要,所有这些数据都必须通过 db 传递到 UI,如何处理设备上的存储?将所有数据存储在设备上是一个坏主意。有没有办法删除“陈旧”数据或推荐的方法是什么?

编辑: android 团队一直在为分页库开发 V3 这里是一个链接到一篇文章的链接,它可能会在这里提供更多的光文章

0 投票
3 回答
1479 浏览

android - 我们如何改变使用 Paging 3 android 加载的项目?

我正在从网络加载帖子,为此我正在使用Paging 3,但现在的问题是我的列表项包含 Like/Dislike 按钮,假设单击Like,那么如何在不重新加载整个数据集的情况下更新该项目的数据?

我已阅读此android-pagedlist-updates,但似乎这适用于较旧的 Paging 2 或 1,那么在Paging 3中实现这一目标的完美方法是什么