0

我想在片段之间共享视图模型,假设我有一个片段A,它显示带有元素(视图持有者)的回收器视图,当我单击其中一个时,我希望元素显示在片段B 中以获取详细信息视图。到目前为止,我已经确定了两种方法来做到这一点。1)拥有一个在片段之间共享的超级视图模型,并像这样保存所选视图模型的引用:

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

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

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

你有什么意见 ?

4

1 回答 1

1

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

于 2020-12-11T22:35:28.313 回答