android 是否有必要以 mvvm 模式实施命令
is that necessary to implement Command in mvvm pattern for android
我正在尝试使用 MVVM 模式构建 Android 应用程序。
我阅读了 Developer's Guide to Microsoft Prism Library 5.0 for WPF 以了解 MVVM。它提到 ViewModel 实现了属性和命令,因此它们可以通过数据绑定、命令相互交互。几乎所有关于 MVVM 的博客都提到了 Command,但是 none 其中实现了 Command。
有两种
<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 模式中实现命令
我使用 MVVM 实现了几个 android 项目。大多数在线资源建议使用您的第一种方法,所以我从它开始,即 layout.xml 将包含对 viewModel 的引用。但很快我就遇到了这样的实施挑战。
在 MVVM 中,view 持有对 viewModel 的引用,但 viewModel 不持有任何对 view 的引用,因此它是松散耦合的,可以轻松测试。假设我的 onclick 按钮需要插入一行并执行一些动画。这里的问题是 viewModel 没有对布局资源的任何引用,因此它不能执行任何与布局相关的功能。
为了解决这种尴尬的情况,我改用了第二种方法,即 layout.xml 持有对视图的引用,而视图持有对 viewModel 的引用。在 view.onClick 事件中,我将首先进行任何与布局相关的编码,然后调用我的 viewModel.onClick 来执行一些核心逻辑,或者在需要时连接到模型。
layout.xml --> 视图 --> 视图模型 --> 模型
在我看来,这个问题没有对错之分。这取决于您的情况和个人喜好。
我正在尝试使用 MVVM 模式构建 Android 应用程序。
我阅读了 Developer's Guide to Microsoft Prism Library 5.0 for WPF 以了解 MVVM。它提到 ViewModel 实现了属性和命令,因此它们可以通过数据绑定、命令相互交互。几乎所有关于 MVVM 的博客都提到了 Command,但是 none 其中实现了 Command。
有两种
<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 模式中实现命令我使用 MVVM 实现了几个 android 项目。大多数在线资源建议使用您的第一种方法,所以我从它开始,即 layout.xml 将包含对 viewModel 的引用。但很快我就遇到了这样的实施挑战。
在 MVVM 中,view 持有对 viewModel 的引用,但 viewModel 不持有任何对 view 的引用,因此它是松散耦合的,可以轻松测试。假设我的 onclick 按钮需要插入一行并执行一些动画。这里的问题是 viewModel 没有对布局资源的任何引用,因此它不能执行任何与布局相关的功能。
为了解决这种尴尬的情况,我改用了第二种方法,即 layout.xml 持有对视图的引用,而视图持有对 viewModel 的引用。在 view.onClick 事件中,我将首先进行任何与布局相关的编码,然后调用我的 viewModel.onClick 来执行一些核心逻辑,或者在需要时连接到模型。
layout.xml --> 视图 --> 视图模型 --> 模型
在我看来,这个问题没有对错之分。这取决于您的情况和个人喜好。