一个没有连接到仓库的活动是否应该有一个ViewModel?

问题描述 投票:0回答:1

我正试图了解Android上的MVVM。

假设我有这个简单的应用程序。(行为就像谷歌的联系人应用)

  • ListActivity。来自服务器的联系人名单
  • 详细活动:一个联系人的详细界面(点击列表项打开)。

对于这个列表来说,如何实现mvvm模式非常清楚。

  • 活动正在观察来自视图模型的实时数据,并更新回收器视图。
  • 视图模型:从资源库中获取所有联系人
  • 存储库:从serverDB等获取AllContacts。

如果用户现在点击列表中的联系人,详细界面就会打开:ListActivity做putExtra("CONTACT", chosenContact),并且正在启动detailActivity。

DetailActivity正在获取这个ContactObject并创建这个视图。

  • 显示图片
  • 节目名称
  • 创建联系人选项(通话、短信、视频)。

在我的例子中,你可以看到DetailScreen并没有和仓库进行通信。它已经从意图中接收到了所有需要的数据。


问题:你应该为这个DetailActivity创建视图模型吗?

  1. 你是否应该为这个DetailActivity创建一个视图模型?
  2. 如果是,如果不需要连接到存储库,这个视图模型的任务是什么?
  3. 在google contacts app中,我有删除联系人和添加联系人到收藏夹的选项。这些应该在viewModel中完成,而这个ViewModel需要连接到存储库吗?详细活动(DetailActivity)的任务,如呼叫、发送消息、视频通话或分享联系人需要上下文,所以据我理解MVVM,它们应该在活动类中完成?
android mvvm viewmodel
1个回答
1
投票

你是否应该为这个detailActivity创建一个视图模型?

在你的情况下,没有必要。

如果是,如果不需要连接到仓库,这个视图模型的任务是什么?

ViewModel对保持一个activityfragment的状态有很大的帮助。如果你有一个旋转器,或者一个复选框,或者任何其他可以改变的字段,比如用户插入的描述文本字段,viewmodel会帮助保持数据,即使用户旋转手机。

在google contacts应用中,我有删除联系人和添加联系人到收藏夹的选项。这些都应该在viewModel中完成,而这个ViewModel需要连接到一个存储库?

是的,你的UI会在你的viewmodel中调用一个fun,这个fun会发送到存储库等。

DetailActivity的任务,如呼叫、发送消息、视频通话或分享联系人,都需要上下文,所以据我了解MVVM应该在Activity类中完成?

没错,比如说,没有必要使用viewmodel来发送与其他应用分享联系人的意图。

© www.soinside.com 2019 - 2024. All rights reserved.