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 和回收器项目的视图模型不能共享同一个父项。因此,在您的情况下,物品传递看起来更健康。
我想在片段之间共享视图模型,假设我有一个片段 A,它显示带有元素(查看器)的回收视图,当我单击其中一个时,我希望该元素在 frangmentB 中显示一个详细视图。 到目前为止,我已经确定了两种方法。 1)有一个在片段之间共享的超级视图模型,并像这样在选定的视图模型上保存引用:
class ShareHappyPlaceModel : ViewModel() {
val happyPlace: MutableLiveData<HappyPlaceModel> = MutableLiveData()
}
2) 将视图模型转换为实现parcable 的数据class 并通过片段之间的导航共享它。然后在 fragmentB 中从数据 class 对象重新创建一个视图模型。
第一个似乎并不优雅,因为我宁愿只对 fragementB 有一个参考共享,而不是所有片段。 第二个问题是我需要将视图模型转换为中介 class.
你有什么看法?
如果您想对两个片段使用相同的视图模型here is 一篇关于它的好文章。但我认为它不适合你。您的案例的问题是您在第一个片段中有 recyclerView。据我了解,recyclerView 中的每个项目都有自己的视图模型。 FragmentB 和回收器项目的视图模型不能共享同一个父项。因此,在您的情况下,物品传递看起来更健康。