2017-04-27 28 views
1

我想用MVVM模式构建一个Android应用程序。
我读过Developer's Guide to Microsoft Prism Library 5.0 for WPF了解MVVM。它提到ViewModel实现了属性和命令,因此它们可以通过数据绑定,命令相互交互。几乎所有关于MVVM的博客都提到Command,但他们都没有实现Command。
有两种他们是必要的,以实现mvvm模式中的命令android

<Button 
    ... 
    app:onClick="@{mvvm.onClick}"/> 

public class ViewModel { 
    public void onClick(View view){ 
    } 
} 

另一

<Button 
    ... 
    app:onClick="@{view.onClick}"/> 

public class MyActivity extends Activity { 
    public void onClick(View view){ 
     viewModel.onClick(); 
    } 
} 

public class ViewModel { 
    public void onClick(){ 
    } 
} 

当中哪些是正确的?如果两者都不对,如何在android的MVVM模式下执行Command?

回答

0

我以MVVM实现的几个机器人项目。大多数在线资源建议使用你的第一种方法,所以我开始使用它,即layout.xml将保存对viewModel的引用。但是,我很快就没有遇到这种实施方面的挑战。

在MVVM,观点认为到视图模型的引用,但视图模型不成立的任何参考,以查看,所以它是松耦合并且可以容易地测试。假设我的onclick按钮需要插入一行并执行一些动画。这里的问题是viewModel没有任何引用布局资源,因此它不能做任何布局相关的功能。

为了解决这个akward的情况下,我已经改变到第二个方法,即layout.xml持有参考查看和观点认为到视图模型的参考。在view.onClick事件中,我会先做任何与布局有关的编码,然后调用我的viewModel.onClick来执行一些核心逻辑,或者根据需要连接到模型。

layout.xml - >查看 - >视图模型 - >模型

在我看来,没有对或错的这个问题。这是基于你的情况和个人喜好。