DataBinding使用教程(一)

2018-11-29  本文已影响0人  Android__Tower

Data Binding 解决了 Android UI 编程的一个痛点,官方原生支持 MVVM 模型可以让我们在不改变既有代码框架的前提下,非常容易地使用这些新特性。Data Binding 的最大的好处就是Android开发者可以像前端开发那样直接在View中绑定数据,避免了代码的重复和繁琐。言归正传,下面带领大家使用Data Binding。

准备

新建一个Project,保证Android 的 Gradle 插件版本不低于 1.5.0-alpha1

classpath 'com.android.tools.build:gradle:3.0.1' 

然后修改对应模块的build.gradle

 dataBinding{
        enabled = true
    } 

修改好的build.gradle如下图所示:

dataBindingEnabled.png

布局文件

使用 Data Binding 之后,xml 的布局文件就不再用于单纯地展示 UI 元素,还需要定义 UI 元素用到的变量。所以,它的根节点不再是一个 ViewGroup,而是变成了 layout,并且新增了一个节点 data。

<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
    </data>
    <ConstraintLayout>
    ....
    </ConstraintLayout>
</layout>

数据对象

定义一个Bean

public class UserBean {

    private String name;
    private int age;

    public UserBean(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

定义 Variable

我们将在xml中去绑定刚刚定义的Bean

    <data>
        <variable
            name="UserBean"
            type="com.zhangl.data.UserBean">
        </variable>
    </data>

定义的TextView中text=@{UserBean.name}

      <TextView
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:text="@{UserBean.name}"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

这样就将UserBean中的name和TextView绑定起来。

Activity中实现

        ActivityMainBinding mainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        UserBean userBean = new UserBean("zhangl",24);
        mainBinding.setUserBean(userBean);
数据绑定显示.png

可以看到,已经将数据显示显示在activity中。

文末附上github地址:https://github.com/zhanglu1994/DataBinding

上一篇 下一篇

猜你喜欢

热点阅读