问题标签 [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 回答
1144 浏览

android - 强制分页库发出 Api 请求

我已经成功实现了一个 PagedList.BoundaryCallback,它从“themoviedb”数据库加载即将上映的电影列表,并将响应保存到数据库中。但它不能按照我想要的方式工作。由于请求返回即将上映的电影列表,因此响应经常更改。但如果我的数据库中已有数据,则不会调用 onZeroItemsLoaded() 方法。我的问题是,如何强制数据源或这个边界回调始终发出 api 请求,并从网络刷新我的数据库的内容?

}

}

0 投票
1 回答
3387 浏览

android - 具有干净架构的 Android 分页库

我正在尝试来自Android Architecture Component的分页库,但我怀疑将它集成到一个基于干净架构的项目中。

通常我有3个模块:

  • 主模块(应用程序)
  • 数据模块(具有网络和数据库依赖项的 Android 模块)
  • 域模块(纯 Kotlin 模块)

为了引入分页,我不得不将PagedList<T>类视为领域类。(IMO 并不是一个糟糕的主意,因为最后是一个列表并且数据源是抽象的)

所以在域层我可以有一个像这样的存储库:

然后在数据模块中创建这样的实现:

到目前为止,一切都很好。我的疑问是,当我们需要转换表示层的域模型时(假设我的项目需要知道是否被选中以显示选中的图标),通常我会将我的域模型映射到一个表示层。

我知道DataSourceFactorymapmapByPage方法,但工厂位于数据层。我的 Viewmodel 使用来自模型层的数据,在这种情况下是 a PagedList,据我所知,分页列表不支持映射。

那么在这种情况下应该做些什么呢?

0 投票
2 回答
795 浏览

android-nestedscrollview - 在 NestedScrollView 中使用 PagedListAdapter

我有一个RecyclerView有一个PagedListAdapter

当我把RecyclerView里面NestedScrollViewPagedList无法计算出列表的末尾时,因此开始请求连续突发新数据。

主要问题是我应该如何PagedListAdapter在里面使用NestedScrollView

0 投票
2 回答
1873 浏览

android - 分页库:在数据库中保存数据不会触发 UI 更改

因此,我使用了 JetPack 工具中 Android 的新分页库部分。

我正在做一个非常基本的演示应用程序,其中显示了我从RandomUser API 获得的随机用户配置文件列表。

问题是我已经设置好了所有东西,它实际上有点工作。

在我的列表片段中,我正在监听数据库更改:

(我尝试了两者,使用FlowablesObservablesRxPagedListBuilder现在我正在使用LiveData。如果可能LivePagedListBuilder的话,我想使用)RxPagedListBuilder

在我的 ViewModel 中,我正在设置LivePagedListBuilder

我已将 DataSource 设置为从我的数据库中获取数据(如果有的话):

如果数据库为空,我已将 BoundaryCallback 设置为从网络获取数据:

问题是 UI 中的FlowableObservableLiveData在数据来自数据库时触发,当UserProfileDataSource从数据库返回一些结果时。如果UserProfileDataSource没有返回任何结果,则调用 BoundaryCallback,成功完成对 API 的请求,将数据存储在数据库中,但Flowable永远不会触发。如果我关闭应用程序并再次打开它,将获取我们刚刚从数据库中获取的数据,然后将其正确显示。

我已经尝试了在我搜索的所有文章、教程和 github 项目中看到的所有可能的解决方案。

正如我所说,我试图将其更改RxPagedListBuilderLivePagedListBuilder.

使用时,RxPagedListBuilder我尝试了两者,FlowablesObservables.

PagedList.Config.Builder我尝试为使用不同的调度程序设置不同的配置。

我在这里真的没有选择,我整天都在为此苦苦挣扎,任何提示都将不胜感激。

如果您需要有关代码的更多信息,请给我留言,我会更新帖子。

更新:

我已将完整的源代码提交到我的Github 存储库

0 投票
0 回答
336 浏览

android - PagingLibrary 未加载更多数据

我正在使用 PagedList 和 PagedListAdapter 并使用 Room 作为数据库。我在表中有 60 个项目,但适配器仅显示 15 个项目(pageSize+ 预取距离)。向下或向上滚动后不会加载更多项目。我正在使用 RxPagedListBuilder。

0 投票
1 回答
5289 浏览

android - 使用分页库更新单个元素的最佳方法

使用新的分页库时,更新单个元素的最佳方式是什么?

假设我们有Paging with network google 示例,使用PageKeyedSubredditDataSource. 想象一下,我们想要更改RedditPost. 因此,我们要检查它是否在列表中,如果是,则更新它。更新不应该像调用 invalidate() 那样简单,它将调用第一页(可能 RedditPost 在第 5 页。我们不想更新所有元素,只更新一个)。

0 投票
2 回答
2221 浏览

android - 注释处理器现在必须显式声明。- 编译器-1.1.1.jar (android.arch.lifecycle:compiler:1.1.1)

我正在尝试将以下库添加到我的应用程序中

我在运行代码时遇到异常。谁能帮我解决这个问题

0 投票
3 回答
10467 浏览

java - 为什么 LiveData setValue 或 PostValue 在视图中只触发一次 onChange?

LiveData setValue 应该触发了 Activity 中的 onChanged 方法,但是它只在第一次调用,当我尝试进行分页之后,它会中断并且不再调用 onChanged,尽管我的响应确实成功并且我看到它在日志。setValue/postValue 有什么问题?它是一个错误吗?我应该自己实现观察者模式吗?那么使用 LiveData 有什么意义呢?我的寻呼仅在这 2-3 天后不起作用.....

  1. MainActivity 类

    /li>
  2. 视图模型

    /li>
  3. 存储库

    /li>
0 投票
3 回答
921 浏览

android - RecyclerView 中的拖动项如何与分页库一起使用?

我的应用程序有一个 RecyclerView 支持拖动项目以更改其顺序。我的应用在添加分页库之前使用 ViewModel、Lifecycle、Room。处理拖动的代码很容易。

但是,在我使用分页库之后,

我的应用程序崩溃了,因为 PagedListAdapter.currentList 不支持设置。

然后我更改代码

此代码直接更改 db 中的任务顺序,库通过 db 更改更新显示顺序。但是,动画很丑。

有没有办法优雅地使用onMovepaging library一起使用?</p>

0 投票
1 回答
5939 浏览

android-paging - 如何在将项目插入 PagedListAdapter 后正确滚动

我正在使用 Android ArchPagedListAdapter类。我遇到的问题是,由于我的应用程序是聊天风格的应用程序,因此在插入项目时我需要滚动到位置 0。但是 PagedListAdapter 找到差异并在后台线程上调用必要的方法,所以似乎没有可靠的方法来调用layoutManager.scrollToPosition(0)

如果有人对我如何在正确的时间滚动有任何想法,将不胜感激。谢谢!

这是我的房间道:

然后是 LivePagedListBuilder: