Android分页库-具有多种排序类型的数据+网络

时间:2019-01-02 09:51:45

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

我最近看到google有一个很棒的用于分页数据的库。

在此Google IO中:

Android Jetpack: manage infinite lists with RecyclerView and Paging (Google I/O '18)

他们解释了如何制作Data + Network DataSource并以Single Source of Truth的形式从数据库中获取数据,并且当数据库中的数据不足时,它会使用BoundaryCallback向网络请求更多数据。

因此,假设我在服务器上有电影列表。客户端(Android用户)可以按受欢迎程度,标题,date_release和...对它们进行排序。

因此,如果用户第一次按标题对电影进行排序,那么一切都会很好,因为数据库中没有数据,服务器将请求数据按标题对它们进行排序并将其发送回去。 但是,如果之后该用户尝试按受欢迎程度对其进行排序呢?由于数据库中有大量电影(例如50部电影)可用,因此它将按流行程度对少量电影进行排序,然后尝试从服务器获取数据,这不是一个很好的体验。

我不能为每种排序类型创建表格,因为这不是一个好习惯。那么我该如何克服这个问题呢?

非常感谢

1 个答案:

答案 0 :(得分:1)

您的问题很有道理。 IMO不必为每种排序类型创建表,但是可以跟踪数据来自哪个端点。例如,您有三个端​​点,其查询为?sort=default?sort=ratings?sort=released_date。您可以在数据库模型类中添加三个额外的布尔属性(例如fromDefaultfromRatingsfromReleasedDate),以跟踪它来自哪个端点并更新这些对应的标志< / strong>每当相同电影数据从多个端点到达时。

现在,当您按评分排序时,将使用SQL查询来过滤标记fromRatingstrue的那些对象。但是最初,您将一无所有,因此您的BoundaryCallback会触发服务器请求,获得分级的电影数据排序,并且在保存之前,您必须将fromRatings覆盖为true。 希望对您有所帮助。