【发布时间】:2020-02-24 22:51:09
【问题描述】:
我在 DAO 上有以下 SELECT
@Query("SELECT * FROM todo ORDER BY time DESC")
abstract DataSource.Factory<Integer, TodoItem> getAll();
我有一个只返回上述内容的存储库。在我的模型中
PagedList.Config config = new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(40)
.setPageSize(20)
.build();
todos = new LivePagedListBuilder<>(todoRepository.getAll(), config).build();
Fragment 只是观察上述todos 并在新更新时调用adapter.submitList(items)。
我最近才切换到使用androidx.paging,然后才获取所有数据并用它填充RecyclerView。
上面的代码可以正常工作。问题是我需要支持多个视图。更准确地说,我需要在具有该日期的第一个元素之上添加日期。在升级之前,我循环这些项目并在需要的地方添加 DateHeader 项目(并在适配器中处理多种视图类型),但是使用这种新方法我无法编辑 DataSource.Factory 提供的内容。
不能使用ItemDecoration 或在每个项目中添加日期并更改其可见性。
我也将日期保存在数据库中,因此我可以group by 并通过date 获取项目计数,如果这有帮助的话。
有没有办法解决这个问题?仅供参考,这里没有网络通信,一切都是本地的,只保存在数据库中。
【问题讨论】:
标签: android mvvm android-recyclerview androidx android-paging