Android 应用将数据从 ViewModel 传递到 ViewModel

Android App pass data from ViewModel to ViewModel

我有一个餐厅应用程序,其中包含两个主要片段,每个片段都有自己的视图模型 -

LiveList 片段和视图模型,它从 Internet 检索餐馆列表并将它们显示在 recyclerView 中。

显示数据库中保存的餐厅并处理所有数据库交互的 SavedList 片段和视图模型

我想要做的是当用户单击 LiveList 中每家餐厅旁边的星号时,该餐厅将被添加到我的 SavedList 数据库中。

我可以:

1- 只需从 LiveListViewModel 中调用 SavedListViewModel.addRestaurant 的引用 ?

2- 需要更改为共享 ViewModel 方法吗?

3-让addRestaurant成为LiveList可以访问的接口?

4- 让 SavedListViewModel 观察来自 LiveListViewModel 的一段 Livedata 并将该 Livedata 绑定到所选餐厅?

5- none 这些方法可行吗?

activity范围中创建一个共享视图模型。

viewModels 为您提供范围为当前片段的 ViewModel 实例。这对于不同的片段会有所不同。

activityViewModels 为您提供范围为当前 activity 的 ViewModel 实例。因此,实例将在同一 activity.

中的多个片段中保持相同

https://developer.android.com/codelabs/basic-android-kotlin-training-shared-viewmodel#4