【发布时间】:2019-10-24 20:15:55
【问题描述】:
我正在为我的应用程序使用 MVVM android 架构。
我想实现点击事件,那么,我们是否需要使用数据绑定架构组件,或者我们可以只使用活动来处理点击事件并验证用户输入?
实现这一点的最佳方法是什么?
【问题讨论】:
标签: android android-architecture-components android-event android-mvvm
我正在为我的应用程序使用 MVVM android 架构。
我想实现点击事件,那么,我们是否需要使用数据绑定架构组件,或者我们可以只使用活动来处理点击事件并验证用户输入?
实现这一点的最佳方法是什么?
【问题讨论】:
标签: android android-architecture-components android-event android-mvvm
那么问题将是使用Databinding 与否。以下是Databinding的一些优缺点:
优点:
缺点:
但是...因为Google 已经宣布它是 Android 架构组件的一部分,我相信您应该使用它。
实现这一点的最佳方法是什么?
我不知道您对Databinding 的熟悉程度,但您应该对Binding Adapters 有所了解,并且在onClick 中您将不需要它。只需在 XML 文件中添加 android:onClick 属性即可。你也可以找到这个 Codelab 来正确实现它:
https://codelabs.developers.google.com/codelabs/android-databinding/#0
例子:
首先确保您在build.gradle 中启用了Databinding
android {
...
dataBinding {
enabled true
}
}
然后转到布局,您将使用数据绑定(并确保它是一个 Activity/Fragment),只需在您的 IDE and than.... 中键入 ALT+TAB
之后,定义类型,例如 ViewModel 及其名称。在将使用点击功能的视图中添加我上面所说的内容。 (android:onClick="@{() -> viewmodel.onLike()}")
你还没有完成。您将需要以某种方式将您的逻辑连接到该数据绑定,因此请转到您的 Activity/Fragment 的 Java/Kotlin 代码并:
将setContentView(R.layout.some_activity) 替换为val binding : SomeActivityBinding =
DataBindingUtil.setContentView(this, R.layout.some_activity)
请注意,SomeActivityBinding 将由 IDE 本身提供,因为根据 xml 命名在 Databinding 库上进行处理。
这是最基本的。祝你好运。
【讨论】: