Kotlin - 根据选择在数据之间共享视图模型

Kotlin - share viewmodel between data based on selection

我想在片段之间共享视图模型,假设我有一个片段 A,它显示带有元素(查看器)的回收视图,当我单击其中一个时,我希望该元素在 frangmentB 中显示一个详细视图。 到目前为止,我已经确定了两种方法。 1)有一个在片段之间共享的超级视图模型,并像这样在选定的视图模型上保存引用:

class ShareHappyPlaceModel : ViewModel() {
    val happyPlace: MutableLiveData<HappyPlaceModel> = MutableLiveData()
}

2) 将视图模型转换为实现parcable 的数据class 并通过片段之间的导航共享它。然后在 fragmentB 中从数据 class 对象重新创建一个视图模型。

第一个似乎并不优雅,因为我宁愿只对 fragementB 有一个参考共享,而不是所有片段。 第二个问题是我需要将视图模型转换为中介 class.

你有什么看法?

如果您想对两个片段使用相同的视图模型here is 一篇关于它的好文章。但我认为它不适合你。您的案例的问题是您在第一个片段中有 recyclerView。据我了解,recyclerView 中的每个项目都有自己的视图模型。 FragmentB 和回收器项目的视图模型不能共享同一个父项。因此,在您的情况下,物品传递看起来更健康。