微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android 分页和分组模型

如何解决Android 分页和分组模型

我有类似 MVVM 的架构,数据流如下:

  • 我在 sqlite 中有数据(图像 src url + 链接数据)

  • 我有这样的存储库层和方法

    fun <T> getPhotos(): LiveData<PagedList<PhotoInfo>>

  • 我正在使用 androidx.paging 库 v.2,它是 Pagedlistadapter 作为我的 RecyclerView 的适配器

现在我想按某个字段对数据进行分组,例如按日期,并且能够将组设为水平(水平滚动)或垂直。

我浏览了类似问题的现有答案和解决方案,以下是我找到的选项:

选项 1

我可以更新查询以对数据进行分组并插入“特殊”行作为分隔符。 然后在 Adapter 中,我可以有一些分支逻辑来处理“常规”行和“分隔符”。

我不喜欢这个选项,因为它涉及 sql 查询的这种不受欢迎的更改。我也无法想象在这种情况下如何实现“水平”组滚动。

选项 2

我可以有嵌套的回收器视图,但在这种情况下,我不知道如何更新我的代码,以便我可以从“线性”PagedList<PhotoGroup> 获得 PagedList<PhotoInfo>

我唯一能想到的:

  • 在存储库中有两个方法,它们为特定组中的组和项目返回“分页”数据,例如:
    • fun <T> getPhotoGroups(): LiveData<PagedList<PhotoGroup>>
    • fun <T> getPhotosForGroup(groupId: Long): LiveData<PagedList<PhotoInfo>>
  • 每个组都有自己的 PagedList 和 RecyclerView。

但恐怕它可能过于复杂并且可能会产生开销。如果我在同一方向(垂直)有父 RecyclerView 和子 RecyclerView,也不确定它会正常工作

我有一种强烈的感觉,我错过了一些东西,并且让事情变得过于复杂。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。