Android DataBinding(一) 基本使用

来源:互联网 发布:网络上bgm是什么意思 编辑:程序博客网 时间:2024/06/14 15:20

DataBinding是2015年IO大会介绍的一个框架,字面理解即为数据绑定,是Google对MVVM在Android上的一种实现,可以直接绑定数据到xml中,并实现自动刷新。

这篇文章将简单介绍一下DataBinding的使用方法,仅供参考。

添加依赖

在Android studio2.0之后,Android studio内部添加了对于DataBinding的支持,只需要在使用 DataBinding 的 Module 中,如下配置:

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

修改Layout文件

我们只需要在原有的布局文件的最外层再添加一个<layout></layout>标签。

<?xml version="1.0" encoding="utf-8"?><layout    xmlns:android="http://schemas.android.com/apk/res/android">    <LinearLayout         android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <TextView            android:id="@+id/textView"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="TextView" />        <Button            android:id="@+id/button"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="Button" />    </LinearLayout></layout>

使用生成类

再Sync Project,在这个过程中Android studio帮我们生成了一个Binding类,我的Layout文件名是activity_main.xml,生成的类为ActivityMainBinding类,命名规则很简单就能看出来。完成后我们就可以在在Java文件中使用ActivityMainBinding类。

    ActivityMainBinding binding;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);//        setContentView(R.layout.activity_main);        binding = DataBindingUtil.setContentView(this, R.layout.activity_main);        binding.textView.setText("test");        binding.button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {            }        });    }

在这里我们就不会再看见我们熟悉的findViewById了,代码简单、书写方便。

数据绑定

接下来就是给控件绑定数据了。我们新建一个Person类

public class Person {    String name;    String age;    Person(String name,String age) {        this.age = age;        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

在Layout文件中使用<data></data> 标记数据来源。

<data>    <variable        name="Person"        type="com.david.databindingdemo.Person" /></data>

在控件中绑定数据

        <TextView            android:id="@+id/textView"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@{Person.name}" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"             android:layout_marginTop="30dp"            android:text="@{Person.age}" />

使用固定的@{ }来标记数据来源,这样就将数据与控件绑定在了一起,还需要在java文件中给Set一个对象

Person person = new Person("David","24");binding = DataBindingUtil.setContentView(this, R.layout.activity_main);binding.setPerson(person);

这样我们运行程序,结果如下:

这里写图片描述

这样,最基础的DataBinding就完成了。

DataBinding的事件监听、表达式、高级绑定、原理等后续会继续完成。

0 0
原创粉丝点击