使用不同的PagedLists分页库和房间,这些页面依赖于不同的请求

时间:2017-11-09 14:11:58

标签: android android-room android-architecture-components android-paging

我正在尝试使用新的Android架构组件设置我的所有列表:Room Persistance LibraryPaging Library。但我面临以下问题。想象一个应用程序,它有很多相同型号的差异列表。每个列表都有自己的服务器URL请求。一些元素可以以不同的反应重复。所以我认为我必须将每个响应的所有元素插入并更新到该模型的表中。此外,每个请求都有页面。例如,elements/famous/0elements/famous/1。因此,当收到第1页响应时,包含列表0元素的列表必须添加第1页返回的元素。

返回LivePagedListProvided的Room请求如下所示:

@Query("SELECT * FROM elements")
fun getElements(): LivePagedListProvider<Int, Model>

当查询的某个元素发生更改,或者添加到数据库的元素影响de query时,LivePagedListProvider observables会提供更改,因此UI会自动更改。

问题是:我应该如何保存和检索可以包含在不同列表中的元素,具体取决于使用分页库的不同请求?

1 个答案:

答案 0 :(得分:0)

如果您只使用一个表来本地存储您收到的数据(从不同的请求到服务器),那么每次更新此表后,您的所有DataSource都将失效,这就是我们看到自动更新的原因。对于不同的请求,您可以使用不同的表,但这是不好的) 我认为您可以使用某些条件编写select query,这些条件表示您对服务器的请求之间的差异,如果这些请求中的结果模型相同。