Android设计模式MVVM之DataBinding简单使用

来源:互联网 发布:网络运营培训课程 编辑:程序博客网 时间:2024/06/05 04:18

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

1.添加依赖

android {    ....    dataBinding {        enabled = true    }}
2.编写Javabean

public class User {    private String name;    private String age;    public User(String name, String age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }}
3.编写xml布局

<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android"   >    <data>        <variable            name="user"//变量名称            type="com.example.admin.mvvmuse.User" />//类的全路径    </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="@{user.name}" />//赋值        <TextView            android:onClick="@{clickListener}"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@{user.age}" />    </LinearLayout></layout>
4.在Activity中绑定数据

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //setContentView(R.layout.activity_main);        ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);        User user = new User("mike","23");        binding.setUser(user);}    }
5.绑定事件

<data>    <variable        name="clickListener"        type="android.view.View.OnClickListener" />   ---------</data>
<TextView            android:onClick="@{clickListener}"//引用变量            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@{user.age}" />

6.添加点击事件

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //setContentView(R.layout.activity_main);        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);        User user = new User("mike", "23");        binding.setUser(user);        binding.setClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "nihao", Toast.LENGTH_SHORT).show();            }        });    }

0 0