【问题标题】:Android Architecture ComponentsAndroid 架构组件
【发布时间】:2019-10-24 20:15:55
【问题描述】:

我正在为我的应用程序使用 MVVM android 架构。

我想实现点击事件,那么,我们是否需要使用数据绑定架构组件,或者我们可以只使用活动来处理点击事件并验证用户输入?

实现这一点的最佳方法是什么?

【问题讨论】:

    标签: android android-architecture-components android-event android-mvvm


    【解决方案1】:

    那么问题将是使用Databinding 与否。以下是Databinding的一些优缺点:

    优点:

    1. 让代码超级干净。
    2. 使代码更短。
    3. 易于测试。

    缺点:

    1. 有时很难调试。
    2. 有点重,会增加编译时间。

    但是...因为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 库上进行处理。

    这是最基本的。祝你好运。

    【讨论】:

    • 我很高兴能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2018-01-13
    • 2017-11-13
    • 1970-01-01
    相关资源
    最近更新 更多