黑马程序员技术交流社区
标题: 揭秘Android 6.0 之 Data Binding Guide(数据绑定指南) [打印本页]
作者: 柳柳桑 时间: 2015-11-24 08:37
标题: 揭秘Android 6.0 之 Data Binding Guide(数据绑定指南)
揭秘Android 6.0 之 Data Binding Guide(数据绑定指南)
前言:Data Binding解决了 Android UI 编程中的一个痛点,官方原生支持 MVVM 模型可以让我们在不改变既有代码框架的前提下,非常容易地使用这些新特性。其实在此之前,已经有些第三方的框架(RoboAndroid)可以支持 MVVM 模型,无奈由于框架的侵入性太强,导致一直没有流行起来。
1、准备:
AndroidStudio 更新到1.3或者更高
2、注意:
DataBinding 是一个 support 包
3、新建一个Project:
>>修改Project的Build.gradle,为 buildscript 添加一条依赖。
classpath "com.android.databinding:dataBinder:1.0-rc1"
>>为用到 Data Binding 的模块添加插件,修改对应的 build.gradle
applyplugin: 'com.android.databinding'
工程创建完成后,我们通过一个最简单的例子来说明 Data Binding 的基本用法。
一、布局文件
使用 Data Binding 之后,xml的布局文件就不再单纯地展示UI 元素。所以,它的根节点不再是一个 ViewGroup,而是变成了 layout,并且新增了一个节点 data,如例1-1所示:
例1-1
- <?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>
复制代码 在Layout中data节点,声明一个variablea子节点,然后就可以在Layout中使用了。Type属性可以是JavaBean、POJO(实际就是Java类),注意:Type应该是全路径。name属性为这个类的引用起的一个别名。如例1-2:
例1-2
- <data>
- <variable
- name="user"
- type="com.example.siyan.sample.Person" />
- </data>
复制代码 当然,还可以使用下面这一种写法。如例1-3:
例1-3
- <data>
- <import type="com.example.siyan.sample.Person" />
- <variable
- name="user"
- type="Person" />
- </data>
复制代码 布局里面使用表达式"@{}"设置object的value。如例1-4:
例1-4
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@{user.name}" />
复制代码 数据对象POJO。如例1-5:
例1-5
- public class Person {
- public final String name;
- public Person(String name) {
- this.name = name;
- }
- public String getName() {
- return name;
- }
- }
复制代码
二、绑定数据用DatabindingUtil.setContentView() 来替换掉 setContentView(),然后创建一个 user 对象,通过 binding.setUser(user) 与 variable 进行绑定如例2-1:
例2-1
- <font size="3">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);
- }</font>
复制代码 AMainBinding类是自动生成的,所有的set 方法也是根据 variable节点的name属性生成的。
至此,一个简单的数据绑定就完成了。运行上述程序,效果如图所示:
作者: Camwly 时间: 2015-11-24 09:07
学习了,谢谢
作者: 耀阳圣尊 时间: 2015-11-24 09:35
赞一个
作者: 欧欧拐 时间: 2015-11-24 12:37
作者: a784161433 时间: 2015-11-24 21:20
太深奥了,完全看不懂啊
作者: 听你说 时间: 2015-11-24 21:53
看着还6啊,点个赞
作者: 学习黑马精神 时间: 2015-11-24 22:26
厉害! 这么快出帖子了!
作者: 夜空的星 时间: 2015-11-24 23:08
真好啊,你真美啊
作者: ppaapc 时间: 2015-11-24 23:15
好顶赞!!
作者: hongguihao 时间: 2015-11-24 23:37
来打个酱油
作者: 她呆萌可爱 时间: 2015-11-25 00:17
虽然不知道再说什么
作者: cbl16888 时间: 2015-11-25 07:14
安卓的实力不可小嘘啊
作者: 董棁 时间: 2015-11-25 08:03
赞一个~~~~~
作者: 王广彬 时间: 2015-11-25 10:22
学习了,数据绑定之后应该少费好多事
作者: 创出一片辉煌 时间: 2015-11-25 16:06
不知道这个数据绑定是双向绑定还是单向的呢?
作者: 长刀研 时间: 2015-11-25 21:43
赞一个.
作者: yaoyeqing 时间: 2015-11-25 23:17
赞赞赞赞
作者: cm181363682 时间: 2015-11-26 18:36
没上就业班还看不懂...希望早点上就业班吧~~
作者: langjun 时间: 2015-11-26 19:42
没有上就业班就看不懂!
作者: fandy568 时间: 2015-11-26 19:58
希望android能越走越远 fighting
作者: 野生小屌丝 时间: 2015-11-26 23:46
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: 会走路的二百块 时间: 2015-11-27 08:57
上完安卓就业班应该就能看懂了
作者: 陈同英 时间: 2015-11-27 19:27
很好.................
作者: 超级宝贝乐爷 时间: 2015-11-27 19:54
6.0不错哦 直接拿取了!!!!!!!!!!!!!!!!!!!!!!!!
作者: 664631215 时间: 2015-11-28 08:52
路过也是有惊喜的
作者: 天橙星 时间: 2015-11-28 22:43
顶一个,虽然不明但是觉厉
作者: 草上飞f 时间: 2015-11-29 00:01
大赞!!!!!
作者: smile不夜 时间: 2015-11-30 21:20
安卓6.0好厉害的样子啊
作者: YuePr 时间: 2015-12-1 22:36
美女还技术这么牛!真真的是服了1
作者: heimawangzi 时间: 2015-12-2 17:02
{:3_47:}{:3_46:}
作者: 草上飞f 时间: 2015-12-3 09:13
好帖!!!!
作者: 667784 时间: 2015-12-3 09:59
不错不错,赞一个~~~~~
作者: 667784 时间: 2015-12-4 16:35
Nothimg is impossible
作者: 大漠孤星 时间: 2015-12-4 19:57
不错哦!----------------------32个赞。
作者: autumnforest 时间: 2015-12-4 22:08
give a good poinggive a good poinggive a good poinggive a good poing
作者: chenxunlei 时间: 2015-12-4 22:09
赞赞赞赞赞赞
作者: 草上飞f 时间: 2015-12-4 22:44
大赞!!!!!
作者: 草上飞f 时间: 2015-12-5 23:53
顶!!!!
作者: 草上飞f 时间: 2015-12-6 00:15
给力!!!!
作者: fuyao1992 时间: 2015-12-7 21:39
精彩的学习经历,点个赞。
作者: fuyao1992 时间: 2015-12-7 21:44
精彩的学习经历,点个赞。
作者: fuyao1992 时间: 2015-12-7 21:59
精彩的学习经历,点个赞。
作者: fuyao1992 时间: 2015-12-7 22:04
精彩的学习经历,点个赞。
作者: lizhaoyu612 时间: 2015-12-7 23:14
看不懂。。。。。
作者: Star_FDt78 时间: 2015-12-7 23:53
黑马是我们的云梯,通天的云梯
作者: 回归原点521 时间: 2015-12-8 00:21
太深奥了,完全看不懂啊
作者: yubail 时间: 2015-12-8 07:44
谢谢分享
作者: yangle123456 时间: 2015-12-8 13:24
学习了,好东西,谢谢
作者: @别闹 时间: 2015-12-8 21:26
真心看不懂,但是我相信我一定有会看懂的时候,加油!
作者: 凤华茂此时 时间: 2015-12-8 22:13
就业班呀就业班,真让人渴望
作者: chenxunlei 时间: 2015-12-9 19:24
赞赞赞赞赞
作者: 孤独成瘾 时间: 2015-12-9 22:14
不错啊
作者: liuzhipeng 时间: 2015-12-10 22:50
柳柳怎么这么有才呢
作者: 段江波 时间: 2015-12-11 22:20
必须的赞一个
作者: 李同学 时间: 2015-12-15 21:09
是真的看不懂啊
作者: dsqhhzz 时间: 2015-12-15 21:33
66666666666666666
作者: 越狱犯 时间: 2015-12-15 22:12
好厉害,学到了
作者: ChinaTuring 时间: 2015-12-15 22:24
学习了 虽然还不懂
作者: 凤华茂此时 时间: 2015-12-15 22:27
安卓,学了java再来找你
作者: ROSSIN 时间: 2015-12-16 00:05
已收藏!
作者: AndroidWhite 时间: 2015-12-16 00:21
学到了 还不错哦
作者: Mr.zhao 时间: 2015-12-16 01:02
完全没到可以看懂的水平
作者: AndroidWhite 时间: 2015-12-18 22:02
努力奋斗中!!!!1
作者: d623234436 时间: 2015-12-24 22:41
大大的赞一个
作者: 凤华茂此时 时间: 2015-12-24 23:25
赞一个,一起加油
作者: houbofly 时间: 2015-12-28 22:23
赞一个,厉害
作者: 韦丹艳58 时间: 2016-1-12 22:27
有用哦!!!!!!!!!
作者: tangshenshen 时间: 2016-3-13 23:16
大赞~~~~~~~~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |