Data Binding的初识

Data Binding的介绍

Data Binding:数据绑定

去年谷歌 I/O大会上介绍了一个非常厉害的新框架DataBinding, 数据绑定框架给我们带来了很大的方便,以前我们可能需要在每个Activity里写很多的findViewById,不仅麻烦,还增加了代码的耦合性,如果我们使用DataBinding,就可以抛弃那么多的findViewById,省时省力。说到这里,其实网上也有很多快速的注解框架,但是注解框架与DataBinding想比还是不好用,而且官网文档说DataBinding还能提高解析XML的速度,其实DataBinding的好用,不仅仅体现在可以省去使用很多啰嗦findViewById,还有很多。往下看你就会明白的。

文/非著名程序员(简书作者)
原文链接:http://www.jianshu.com/p/2d3227d9707d
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。


现在有比较流行的注解RoboGuice、ButterKnife,但是今天我们来讲解Data Binding的使用方法。

环境搭建

确保 Android 的 Gradle 插件版本不低于 1.5.0-alpha1:

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

现在AS更新到2.2版本,2.1版本是目前的稳定版,也是我现在使用的版本。

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

同时在你的build.gradle上贴上两句:

compile 'me.tatarka.bindingcollectionadapter:bindingcollectionadapter:1.1.0'
compile 'me.tatarka.bindingcollectionadapter:bindingcollectionadapter-recyclerview:1.1.0'

好了,接下来让我们来新建一个项目吧!

创建项目

创建项目就不用多说了吧!项目创建好了,在xml布局文件中,代码会跟以往的不太一样。

<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <!--新增节点-->
    <data>
        ...
    </data>

    <!--原先的根节点-->
    <LinearLayout>
        ...
    </LinearLayout>
</layout>

新建一个User类:

public class User {
    private final String firstName;
    private final String lastName;

    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
}

activity_main.xml

<data>
     <import type="com.example.androiddatabinding.User"/>
     <variable name="user" type="User"/>
</data>
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.firstName}" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.lastName}"/>
    </LinearLayout>

细心的童鞋会发现android:text=”@{user.lastName}”这个奇怪的代码,这就是数据与变量进行绑定,因此,xml的UI元素就可以直接使用了。

MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        User user = new User("yang","hao");
        binding.setUser(user);
    }

ActivityMainBinding是自动生成的,根据xml文件的名称首字母大写+Binding的名称自动生成。


版权声明:本文为huairenbieku原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。