MVVM-架构与数据绑定库,android开发流程

如上述代码所示,大量的 findViewById() 调用之后,又是一大堆 setter/listener 之类的调用。 即使使用 ButterKnife 注入库也没有使情况改善。而数据绑定库就能很好地解决这个问题。

在编译时创建一个绑定类,它为所有视图提供一个 ID 字段,因此不再需要调用 findViewById() 方法。实际上,这种方式比调用 findViewById() 方法快数倍,因为数据绑定库创建代码仅需要遍历视图结构一次。

绑定类中也实现了视图文件的绑定逻辑,因此所有 setter 会在绑定类中被调用,你无须为之操心。总之,它能让你的代码变得更简洁。

如何设置数据绑定?

android {
compileSdkVersion 25
buildToolsVersion “25.0.1”

dataBinding {
enabled = true
}

}

首先在 app 的 build.gradle 中添加 dataBinding { enabled = true }。之后构建系统会收到提示对数据绑定启用附加处理,如,从布局文件创建绑定类。

...

接下来,在 标签中包装下布局中的顶层元素,以便为此布局创建绑定类。绑定类具有和布局 xml 文件相同的名称,只是在结尾添加 Binding,例如, Activity_main.xml 的绑定类名字是 ActivityMainBinding。 如上所示,命名空间的声明也移到布局标记中。然后,在布局标记内声明将需要绑定的数据作为变量,并设置好名称和类型。示例中,唯一的变量是视图模型,但后续变量会增加。你可以选择导入类,以便能使用 View.VISIBLE 或静态方法等常量。
如何绑定数据?


android:padding="@{vm.bigPadding ? @dimen/paddingBig : @dimen/paddingNormal}"
android:text=’@{vm.text ?? @string/defaultText + “Additional text.”}’ />

视图属性上的数据绑定指令以@开头,以大括号结束。你可以使用任何变量在数据段中导入你之前声明的变量。这些表达式基本支持你在代码中的所有操作,例如算术运算符或字符串连接。

Visibility 属性中还支持 if-then-else 三元运算符。还提供了合并运算符 ??,如果左边的值为空,则返回右操作数。在上述代码中,你可以像在正常布局中一样访问资源,因此你可以根据布尔变量的取值选择不同的 dimension 资源,也可以使用 padding 属性查看这些资源。

即使你在代码中使用 getters 和 setters,你所声明的变量的属性也可以用字段访问语法的形式访问。你可以在 slide 上的文本属性中看到此部分,其中 vm.text 调用视图模型的 getText() 方法。最后,一些小的限制也适用,例如,不能创建新对象,但是数据绑定库仍然非常强大。
哪些属性是可以绑定的?

android:text="@{vm.text}"
android:visibility="@{vm.visibility}"
android:paddingLeft="@{vm.padding}"
android:layout_marginBottom="@{vm.margin}"
app:adapter="@{vm.adapter}"

实际上,标准视图的大多数属性已经被数据绑定库支持。在数据绑定库内部,当你使用数据绑定时,库按照视图类型查找属性名称的 setter。例如,当你把数据绑定到 text 属性时,绑定库会在视图类中使用合适的参数类型查找 setText() 方法,上述示例是 String。

当没有对应的布局属性时,你也可以使用数据绑定的 setter。例如,你可以在 xml 布局中的 recycleler 视图上使用 app:adapter 属性,以利用数据绑定设置适配器参数。

对于标准属性,不是所有的都在 View 上有对应的 setter 方法。例如,paddingLeft 情况下,数据绑定库支持自定义的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android MVVM 架构是一种基于 Model-View-ViewModel(模型-视图-视图模型)设计模式的架构,它旨在实现 Android 应用程序的高内聚、低耦合、可测试性和可维护性。在 MVVM 架构中,View(视图)和 ViewModel(视图模型)之间通过数据绑定进行通信,ViewModel(视图模型)和 Model(模型)之间通过业务逻辑进行通信。 MVVM 架构将应用程序分为三个部分: 1. Model:处理数据和业务逻辑,与数据、网络、API 等打交道。 2. View:负责显示 UI、处理用户输入和事件,是用户与应用程序交互的界面。 3. ViewModel:作为 View 和 Model 之间的桥梁,处理视图逻辑、业务逻辑和数据绑定,将 Model 中的数据转换为 View 可以显示的数据。 在 MVVM 架构中,View 和 ViewModel 之间通过数据绑定实现双向通信,View 可以观察 ViewModel 中的数据变化,并及时更新 UI,同时用户的操作也会触发 ViewModel 中的业务逻辑,从而实现 View 和 Model 的解耦。 MVVM 架构的优点包括: 1. 高内聚、低耦合:各个模块之间的职责清晰明确,代码结构清晰,易于维护。 2. 可测试性:ViewModel 和 Model 都是纯 Java 类,不依赖 Android 系统,易于编写单元测试。 3. 可维护性:MVVM 架构使得代码易于维护和扩展,添加新功能时可以只修改 ViewModel 或 Model,而不影响 View。 总之,MVVM 架构是一种适用于 Android 应用程序的高效、可维护的架构,可以提高开发效率、代码质量和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值