Android mvvm 中的 ViewModel 管理

Android ViewModel management in mvvm

我正在创建一个示例应用程序 (Last-Mvvm) to learn (and possibly show) the usage of mvvm pattern, using Android data binding

我有一个 activity,里面有我的 ViewModel 对象。我还有一个 RecyclerView 适配器,它包含一个项目列表,这些项目被转换为另一个 Viewmodel。我想在适配器中保存列表的状态(用于旋转更改)。
那么:我应该把它保存在哪里?在 activity 里面?还是在activity的viewModel中?或者别的地方?

另外,还有一点不太清楚
直接从 viewModel 执行休息调用(通过 Retrofit)或数据库调用(因为我会使用接口)是否可以,或者创​​建一个接口比视图更好(activity)实施并执行所有调用?

我会尽力解释

First. So: where should I save it? inside the activity? Or in the viewModel of the activity? Or somewhere else?

Second. Is it fine to perform rest calls (through Retrofit) or database calls directly from the viewModel (since i'd use interfaces), or would it be better to make an interface that the view (activity) implements and performs all the calls?

来自 article.

的示例

在下面的架构中,您可以看到 RecyclerView 项的 OnClickListenerOnLongClickListener 的实现。

  • 虚线是链接
  • 实线是方法调用

工作原理

  1. ViewHolderWrapper 作为 ClickListener 用于 ViewHolder 的根视图。根据实现 ViewHolderWrapper 可以代理 HolderClickObservable 或根据 SelectionHelperViewHolderWrapper 可以手动突出显示所选项目。
  2. SelectionHelper 负责保存选择状态并通知 SelectionObserver 有关更改。
  3. 侦听器(在本例中为适配器)负责突出显示所选项目并进行更新。

总结

第一。您可以通过 activity 使用方法 onSaveInstanceState()onRestoreInstanceState().

恢复适配器状态

第二。您需要创建轻量级的 ViewHolder,它只负责将数据绑定到视图。可以在适配器或 activity.

处执行操作

另见 example application