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

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

1.准备:

Android Studio 更新到1.3或者更高

2.注意:

Data Binding 是一个 support 包

3.新建一个Project:

u 修改Project的Build.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>

在Layout中data节点,声明一个variablea子节点,然后就可以在Layout中使用了。Type属性可以是JavaBean、POJO(实际就是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>

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

<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属性生成的。

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

时间: 2024-10-10 20:47:14

传智播客揭秘Android 6.0之Data Binding Guide的相关文章

揭秘传智播客班级毕业薪资超7k的内幕系列 之三 ----国企慕名而来,将未毕业学员“抢走”,传智播客又一次定义“被就业”

前面文章提及Java六期学员张同学提前就业某国企,入职薪资6.3k,各种福利齐全.作为班级首位就业同学,他的就业也成为了班级其它同学就业的风向标.但事实上张同学的就业属于"被就业",传智播客在这个故事里赋予其新的含义. 要理解"被就业"在这里的含义.我们须要先了解张同学的就业故事. 5月中旬某天,传智播客咨询专员给就业老师发了个企业求合作的联系信息.就业老师遂联系该企业,了解到该企业着急招聘Java开发project师,然而当时最快毕业的班级的毕业时间也得在2个月后

揭秘传智播客班级毕业薪资超7k的内幕系列之四----汽车工的华丽转身

---不是本科毕业?不是计算机专业?做过电子厂?做过数控?看传智中专生侃项目,"侃晕"项目经理.从流水线上华丽转身,8.5k高薪再就业 系列三承诺写写上海传智Java六期提前就业的一位同学,为什么写他?由于从他身上我看到了非常多正能量,看到了一个不具备从事IT业基础知识的屌丝怎样不甘于现状怀揣改变生活,提升职业层次的梦想.经历层层"险关",终于选择传智.学有所成,华丽转身,以8.5k较高薪资就业,让"梦想照进现实": 首先介绍下该同学,小陈是中专

传智播客 安卓 视频 教程

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha 传智播客 Android视频教程_传智播客和黑马程序员Android视频教程下载 step 01 初级教程 适用人群:有一定Java基础 学习周期:20天 市场价值初级Android工程师需求,薪资范围在6000~8000元/月. 学习后目标 1.能够根据项目需求,完成对应的模块设计与开发.2.能够担任初级Android工程师需求,可根据产品经理需求完成程序编写,多种分辨率的屏幕适配

传智播客C语言视频第二季(增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)

?? 卷 backup 的文件夹 PATH 列表卷序列号为 000000F4 D4A8:14B0J:.│  1.txt│  2.txt│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一章C语言概述A│  ├─文档│  │      第1讲 C语言第一阶段.doc│  │      │  └─视频│          第1讲 C语言第一阶段.mp4│          ├─2传智播客_尹成_C语言从菜鸟到高手_第二章C语言跨平台HelloWorld-A│  ├─第10节 2.5.1-2.5.7C

传智播客C语言视频第一季(有效下载期为10.1-10.7,10.8关闭)

?? J:\传智播客_尹成_C语言从菜鸟到高手├─传智播客_尹成_C语言从菜鸟到高手_第一章C语言概述A│      第一讲1.1C语言第一阶段.mp4│      第二讲1.2c语言入门教程.mp4│      ├─传智播客_尹成_C语言从菜鸟到高手_第七章编译选项_链表_栈_队列_C实战│  ├─7.1编译与预处理│  │      第10讲 7.1.14-24宏的高级用法2.mp4│  │      第11讲 7.1.25文件包含-7.1.28编译及预处理小节.mp4│  │      第

传智播客 2015 刘意 Java基础-视频-笔记day27(完结)(2016年5月1日12:42:20)

day27 1.类的加载概述和加载时机 2.类加载器的概述和分类 类加载器 负责将.class文件加载到内存中,并为之生成对应的Class对象. 虽然我们不需要关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行. 类加载器的组成 Bootstrap ClassLoader根类加载器 Extension ClassLoader扩展类加载器 SysetmClassLoader系统类加载器 通过这些描述我们就可以知道我们常用的东西的加载都是由谁来完成的. 到目前为止我们已经知道把class文

传智播客C/C++各种开发环境搭建视频工具文档免费教程

传智播客作为中国IT培训的领军品牌,一直把握技术趋势,给大家带来最新的技术分享!传智播客C/C++主流开发环境免费分享视频文档中,就有写一个helloworld程序的示范.火速前来下载吧 所谓"工欲善其事,必先利其器". 欲学C/C++,必先搭建好开发环境,欲成为C/C++高手,必先跑起来helloworld! C/C++ IDE仅仅是工具--剑,C/C++语言就是剑法.欲雄霸天下,必须精通各种剑,精通各路剑法.请大家认真关注http://c.itcast.cn最新技术视频. (有图有

传智播客C语言视频第二季 第一季基础上增加诸多C语言案例讲解,有效下载期为10 5-10 10关闭

卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│  1.txt│  c语言经典案例效果图示.doc│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一章C语言概述A│  ├─文档│  │      第1讲 C语言第一阶段.doc│  │      │  └─视频│          第1讲 C语言第一阶段.mp4│          ├─2传智播客_尹成_C语言从菜鸟到高手_第二章C语言跨平台HelloWorld-A│  ├─2.1 C语言环境简

传智播客C/C++学员荣膺微软&amp;Cocos 2d-x黑客松最佳创新奖

?? 6月30日,历时32小时的微软开放技术Cocos 2d-x 编程黑客松在北京望京微软大厦成功落下帷幕,这是微软开放技术首次联合Cocos 2d-x 在中国举办黑客松.此次活动共有包括传智播客C/C++学院的学员组成的闪游队,以及Hurry队.繁星队等在内的18个团队,70人参加了这场开发盛事,参赛团队中,不乏经验丰富的一线手游团队. "太空大战"项目演示 微软开放技术Cocos 2d-x 编程黑客松,是微软开放技术.Cocos2d-x 开源引擎联合举办的一场属于游戏编程开发者的聚