码迷,mamicode.com
首页 > 移动开发 > 详细

传智播客揭秘Android 6.0之Data Binding Guide

时间:2015-11-25 19:01:14      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

前言:Data Binding 解决了 Android UI 编程中的一个痛点,官方原生支持 MVVM 模型可以让我们在不改变既有代码框架的前提下,非常容易地使用这些新特性。其实在此之前,已经有些第三方的框架(RoboAndroid可以支持 MVVM 模型,无奈由于框架的侵入性太强,导致一直没有流行起来。

1.准备:

Android Studio 更新到1.3或者更高

2.注意:

Data Binding 是一个 support 

3.新建一个Project

u 修改ProjectBuild.gradle,为 build script 添加一条依赖。

classpath "com.android.databinding:dataBinder:1.0-rc1"

u 为用到 Data Binding 的模块添加插件,修改对应的 build.gradle

applyplugin: ‘com.android.databinding‘

     工程创建完成后,我们通过一个最简单的例子来说明 Data Binding 的基本用法。

  1. 布局文件

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

 

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <import type="com.example.siyan.sample.Person" />
        <variable
            name="user"
            type="Person" />
    </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}"
            android:textSize="20sp" />
    </LinearLayout>

Layoutdata节点,声明一个variablea子节点,然后就可以在Layout中使用了。Type属性可以是JavaBeanPOJO(实际就是Java),注意:Type应该是全路径。name属性为这个类的引用起的一个别名。如下:

 

<data>
    <variable
        name="user"
        type="com.example.siyan.sample.Person" />
</data>

当然,还可以使用下面这一种写法。如下所示:

<data>
    <import type="com.example.siyan.sample.Person" />
    <variable
        name="user"
        type="Person" />
</data>

布局里面使用表达式"@{}"设置objectvalue。如下所示:

 

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.name}" />

    android:textSize="20sp" />

 

public class Person {
public final String name;

public Person(String name) {
this.name = name;
    }

public String getName() {
return name;
    }
}

  1. 绑定数据

用 DatabindingUtil.setContentView() 来替换掉 setContentView(),然后创建一个 user 对象,通过 binding.setUser(user) 与 variable 进行绑定如下所示:

 

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//注意AMainBinding 是根据布局名字怎么生成的
AMainBinding dataBinding = DataBindingUtil.setContentView(this, R.layout.a_main);
    Person p = new Person("传智播客");
    dataBinding.setUser(p);
}

AMainBinding类是自动生成的,所有的 set 方法也是根据 variable节点的name属性生成的。

至此,一个简单的数据绑定就完成了。运行上述程序,效果如图所示:

技术分享

 

传智播客揭秘Android 6.0之Data Binding Guide

标签:

原文地址:http://www.cnblogs.com/itcast-czbk/p/4995129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!