[英]Communication between view and ViewModel in MVVM with LiveData
[英]MVVM: Complex View/ViewModel -> Multiple LiveData objects?
大多数MVVM示例都处理非常简单的用户界面。
但可以说我有一个活动,其中有许多要更新的视图(即大量数据)
正如我在其他地方读到的那样,多个ViewModel对象是一种错误的模式。
因此,正如我所见,有两种解决方案:
创建一个包装所有其他数据对象的单个对象(以及单个LiveData)。
但这有一个问题-每个要更新的数据对象都会导致整个UI进行更新。
创建多个对象(以及多个LiveData对象)。
这意味着我需要观察每个LiveData对象。 这种模式有问题吗?
提前致谢!
您提到的第一点:是的,这不是最佳的模式,但是如果数据量较小,则分离LiveDatas会增加工作量,但收益却减少
您提到的第二点:是的,这是最佳选择,您可以为要更新的每个View都拥有一个LiveData对象,并从活动或片段中观察它们。 此模式没有问题。
关于Mutilple ViewModels:如果一个ViewModel中发生的事情太多(LiveData对象或函数),则在同一活动/片段中使用多个ViewModels模式也是一种选择。 仅建议这样做以使viewModels更轻。 因此,仅当您拥有大型viewModel类时才使用此方法
ViewModel
以获取离散类型的信息。 例如,您可以拥有一个UserViewModel
来处理有关User
所有状态。 这意味着您可以在另一个上下文中使用相同的ViewModel
,而无需提取不必要的数据(就像您只有一个God ViewModel
)。
LiveData
对象以对视图进行建模。 在可能的情况下,最好将数据压缩为逻辑对象。 如果仅仅是为了使事情易于管理。
如果您有一个User
,则应将其用于LiveData
而LiveData
为电子邮件地址,显示名称,年龄等使用LiveData
。这将使数据绑定的过程变得简单得多。 尝试将所有内容按逻辑分组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.