DataBinding 使用介绍

DataBinding 是 Google 在 Jetpack 中推出的一款数据绑定的支持库,利用该库可以实现在页面组件中直接绑定应用程序的数据源。使其维护起来更加方便,架构更明确简介。

简介

那么 DataBinding 本质上到底是个什么呢?它在开发正扮演着什么样的角色?我们应该如何使用?
DataBinding 名为数据绑定,他的功能很简单,就是将数据绑定在 UI 页面上(这不是废话吗),明白这一点很重要,DataBinding 唯一的作用,也是他的使命,就是绑定数据,后面的一切,以及所有的支持库,本质上都是为了支持这个功能。

绑定一词有两种解释,第一是将数据绑定在 UI 元素上;第二是将 UI 上的数据绑定到对应的数据模型中;此外,除了将数据与 UI 绑定在一起,还要支持对数据及 UI 的变动观察,其中一个发生变动就需要同步到另一个上去,也就是同步。

那么 DataBinding 对于整体架构、对于我们开发者来说到底意味着什么呢?由于 Android 开发语言的限制,最早期的 Android 开发都用 MVC 架构,导致代码臃肿不堪,难以维护,后来出现了 MVP 架构,代码倒是清晰了起来,但同样也存在过度设计、各种接口方法满天飞、内存泄漏的问题,导致很多人很难准确的使用 MVP。无论是 MVC 还是 MVP 或多或少都存在一些问题,始终无法找到一个完美的解决方案,其根本上是由于 Android 开发的模式本身导致的,我们需要先监听数据的变化,然后再将变化后的数据同步更新到 UI 上,这样的步骤我们一直在重复,MVC/MVP 本质上也没有解决这个问题,这样的重复性代码我们写了一次又一次。而 DataBinding 就是为了解决这个问题而存在的,我们只需要将数据绑定到 UI 元素上,更新数据时 UI 就会跟着改变,反之亦然,大大节省了我们的代码。
下面就来讲讲他是如何实现的。

启用 DataBinding

首先设置使用 Databinding,在 app module 的 build.gradle 中添加如下代码即可:

android {
    ...
    dataBinding {
        enabled = true
    }
}

布局绑定

在使用 DataBinding 时就不能按照之前的方式来编写布局文件了,布局文件的跟布局应该是 layout,layout 中同时存放要绑定的数据及布局,如下:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"><data>
        <variable name="title" type="java.lang.String" />
    </data><LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{title}" />
    </LinearLayout>
</layout>

layout 为跟布局,data 节点中存放数据,下面就是我们常见的布局文件。
data 中的 variable 标签为变量,类似于我们定义了一个变量,name 为变量名,type 为变量全限定类型名,包括包名。布局中通过 @{} 来引用这个变量的值,{} 中可以是任意 Java 表达式,但不推荐使用过多的代码。

我们可以使用 import 语法来导入类,以及使用 alias 设置别名:

    <data>
        <import type="java.lang.String"/>
        <import type="com.zhangke.demo.jetpack.entity.User"
                alias="ZKUser"/>
        <variable name="title"<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值