RecyclerView Adapter 依赖两个数据源

RecyclerView Adapter depends on two sources of data

假设

我的 Recycler View 应该显示所有页面,其中一些页面由当前登录的用户控制,其中我的 Recycler View 的项目如下所示:

其中 red/green 圆圈表示该页面是否属于当前登录用户。

我的问题是我的 Recycler View 依赖于两个数据源:

  1. LiveData<List<PageEntity>> 显示数据库中存储的所有页面。
  2. LiveData<List<User_Page_Entity>>表示当前用户控制了哪些页面。

由于 Room 会在数据库发生变化时同时向其所有观察者启动一个通知程序,如果我在两个源上初始化观察者并且每当它们发生变化时都会在适配器上启动 notifyDataSetChanged,它导致同时调用两个 notifyDataSetChanged 引发异常,即在两个方法调用之一中分离的持有者之一要求再次分离。

IllegalArgumentException: called detach on an already detached child ViewHolder

相比之下,我不能只对一个观察者调用 notifyDataSetChanged,因为我不知道 Room 会首先调用哪个观察者。

现在我不知道该怎么做以及如何在同一个回收器视图中维护这两个数据源之间的关系,经过两天的思考我完全愿意听取任何建议或意见并实施它使应用程序尽可能干净编码

这个问题的答案在我的其他相关 and its

当然,在有人提供另一个好的解决方案之前,我仍然乐于接受建议,但我想 post 我做了什么来解决我的问题,以防将来有人看到我的问题。