LiveData,具有异构回收器视图的视图模型

LiveData, View Models with Heterogeneous Recycler View

我正在开发一个 android 应用程序,它有一个包含多种视图类型的回收器视图。它最初是一个基于 MVP 的应用程序,我正在尝试使用 LiveData 和 ViewModels 将其转换为基于 MVVM 的架构。我有一个主屏幕,在回收站视图中列出了不同类型的视图。每个视图都有自己的 ViewModel 和相应的模型,因此它的主屏幕具有回收器视图作为不同视图模型的集合。

这是我第一次实现 LiveData,所以在设计上遇到了一些问题。我在这里看到一些选项 -

  1. 我为我的家创建了一个父 HomeViewModel activity,它包含一个 LiveData 对象,包含不同子 ViewModel(代表不同视图类型)的列表,使得 activity它的生命周期所有者。然后我将每个观察者的每个视图(回收者视图的元素)更新为该 LiveData 对象。

  2. 我为每个子 view/view 模型创建单独的 LiveData 对象,并让 activity 作为每个 model/live 数据的生命周期所有者,并独立更新它们的视图activity 与各自的观察员。

  3. 我为每个子 view/view 模型创建单独的 LiveData 对象,并将各自的视图持有者 类 作为它们的生命周期所有者,并在各自的持有者 类 中更新个人视图.

请帮我提出更好的处理方法,或者除了指定的方法之外还有其他方法。

谢谢

我同意创建一个父视图模型,例如"HomeViewModel",但我认为为每个视图类型创建视图模型似乎有点过度工程化,因为每次都需要创建一个新的视图类型,您需要创建一个新的 ViewModel,而且我看不到 recyclerview 中的视图有任何专用视图模型的要求。在我看来,最好的方法是只有 1 个视图模型。然后我建议你像本文 https://proandroiddev.com/writing-better-adapters-1b09758407d2 中那样为你的 recyclerview 实现适配器工厂模式。如果你有这样的适配器工厂模式,你可以概括你的 recyclerview 数据,例如你可以像上面的 post 那样称呼它 "Visitable"。然后,您的视图模型只能包含 1 个可访问列表的实时数据,由 fragment/activity.

观察到