Data Binding ----android MVVM模式的依赖库

Data Binding Library

本文档解释了如何使用Data Binding Library 来编写声明式布局并把绑定应用逻辑和布局的胶合代码最小化。

它是一个兼容库,因此拥有很强的灵活性和兼容性,它可以兼容到android2.1.

想要使用本库,android 的gradle版本要大于等于1.5。你可以在这里查看如何更新android Gradle插件。

集成环境


开始使用data binding,需要在Android SDK Manager中下载支持库。

在app的build.gradle中添加如下代码:

Data Binding ----android MVVM模式的依赖库_第1张图片

Data Binding Compiler V2


android Gradle Plugin 3.1.0 Canary 6 附带的一个可选择的编译器,可以在gradle.properties 文件中添加一下代码来调用:

                 android.databinding.enableV2=true

新编译器特性:

- ViewBinding 类在使用java编译器之前由Gradle Plugin生成,以此避免java由于不相关原因编译失败出现大量的误报错误。

- libraries 会保留其生成绑定类和映射器的信息,对于多模块项目来说能显著提高数据绑定的性能。

Data Object(DO)

这是一个plain-old Java Object(POJO),这种类型的类都是一些死数据

Data Binding ----android MVVM模式的依赖库_第2张图片

也可以使用JavaBeans Object:

Data Binding ----android MVVM模式的依赖库_第3张图片

在data binding的角度来看,这两个类是等价的。

Binding Data


在默认情况下,会根据布局文件的名字来生成一个Pascal格式以Binding结尾的Binding类。例如:布局文件名为main_activity,生成的Binding类为MainAcitivityBinding。这个类持有从layout 属性到layout View所有的binding,还知道如何为binding表达式赋值。

Data Binding ----android MVVM模式的依赖库_第4张图片

事件处理(Even Handing)


Data Binding允许你编写表达式来处理从View分发出来的事件(例如OnClick)。除少数例外,事件属性名由监听方法的名字来管理。例如:View.OnLongClickListener有一个onLongClick()方法,所以在需要使用这个事件的控件需要添加的属性为:android:onLongClick="@{对象::对象的方法}" 就是指定对象类里面的这个方法来替代onLongClick方法处理长点击后执行的逻辑业务。有两种方法来实现:

--Method References:在你的表达式中,可引用符合监听器方法签名的方法。Data Binding会将方法引用和其所有者对象包装到监听器中,然后将监听器设置到对应的View上。表达式为空,不创建监听器,而是设置空监听。

--Listener Bindings:这种方法的表达式为lambda表达式。无论如何Data BInding都会给View设置一个监听器,当事件发生时才会判断表达式是否为空。

前一个先判断表达式是否为空在创建监听器,后一个不判断直接设置,执行时才判断。

Method References

你可能感兴趣的:(Data Binding ----android MVVM模式的依赖库)