Android Paging Library - 具有多种排序类型的数据+网络

Sam*_*ari 2 sorting android android-architecture-components android-paging

我最近看到谷歌有一个很棒的数据分页库。

在这个 Google IO 中:

Android Jetpack:使用 RecyclerView 和 Paging 管理无限列表(Google I/O '18)

他们解释了如何Data + Network DataSource从数据库中创建和获取数据Single Source of Truth,当数据库没有数据时,它会通过 .NET 从网络请求更多数据BoundaryCallback

因此,假设我在服务器上有一个电影列表。客户端(Android 用户)可以按受欢迎程度、标题、发布日期等对它们进行排序。

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

我无法为每种排序类型制作表格,因为这不是一个好的做法。那么我该如何克服这个问题呢?

非常感谢

小智 5

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

现在,当您按评级排序时,您将使用 SQL 查询来过滤标志为 的fromRatings那些true。但最初,您将没有任何数据,因此您会BoundaryCallback启动服务器请求,获取评级排序的电影数据,然后在保存之前,您必须覆盖fromRatingsto true。希望能帮助到你。