【发布时间】:2017-11-06 14:25:15
【问题描述】:
在MVVM pattern 上,ViewModel 包含业务逻辑并在需要更新时通知 View。视图也会通知它有关用户事件的信息。
据我了解,每个模型都应该有一个关联的视图模型。所以,如果我们有以下模型:
- 用户
- 帐户
我们将拥有以下 ViewModel:
- 用户视图模型
- AccountViewModel
但是,我发现的所有关于使用 MVVM 进行数据绑定的示例都使用单个 ViewModel 进行布局。最近,Google 在Architecture Components 中引入了ViewModel 类。这让我相信一个 Activity 会有一个 ViewModel 可以连接到所有相关的模型:
用户/帐户 --> ActivityViewModel
如果我们想到RecyclerView,情况就会变得更加复杂。每个适配器项本身都可以是一个 ViewModel,因此具有 RecyclerView 的 Activity 将在列表中具有多个 ViewModel,并为剩余的视图内容加上一个主视图(假设它们需要来自 ViewModel 的信息)。例如:
在此示例中,我们有一个 Account ViewModel 列表和一个 UserViewModel。这将如何嵌入到单个 ActivityViewModel 中?
【问题讨论】: