数据绑定(data binding)

转载 2016年02月29日 20:32:23



据绑定(Data Binding)-Part2

在之前我们做了一个简单的Twitter客户端,但是简单地介绍ViewHolder实现,可能没有充分地让你明白Data Binding的使用方法。那么我们现在就来看看怎么样将Data Binding引入到项目中。

首先我们要在工程目录下的gradle脚本添加依赖:

在要在使用Data Binding的module下的gradle脚本中添加依赖:

你会发现在后面这个gradle脚本中没有添加data binding依赖——它实际上只是在构建项目的时候附加的工具。

你应该在这个操作方法中领悟到一些东西:实际上Data Binding只是一个代码生成工具,它会在build项目的时候生成一些绑定View和数据对象的模板代码。

在我们的例子中,它解析目标是layout/status_item.xml中的节点。根据布局文件的文件名,它会自动生成一个数据绑定类StatusItemBinding,我们在StatusViewHolder使用的就是这个神秘的类。

之后Data Binding将包装去掉,由于在StatusItemBinding类中已经解析出了属性,它同时也会移除节点,只剩下RelativeLayout。换句话说,它将这个文件变回了普通的XML layout文件,并添加了一个数据绑定类实时更新其中的内容。

我们再重温一下StatusViewHolder的代码,现在应该明白一点它的运作机制了吧:

DataBindingUtil.bind(itemView)方法会在build的时候自动生成。这时候我们需要做的是在bind(Status status)中调用StatusItemBinding的setter方法,将我们在中声明的数据对象(.data.Status)赋值给它。之后我们要显式地调用bind(Status status)方法将数据实体与它绑定。

你可以从我们的例子中初步看出数据绑定的效果:

part-1

这一切都运作的非常好,就是一个含有三个子view的布局被绑定了,data binding看起来也没为我们省去很多工作,也只是省去了findView与setText()两个操作而已。但是它所能做的并不仅仅是这样!可能有人注意到了我们同时从twitter的API中获取了头像的url,layout中我们没有对ImageView进行绑定。在下一章中我们将会引入Glide来加载图像,并将它与Data Binding结合起来。

本文章主要用于解释原理,没有添加额外代码。前文中的例子在这里可以看到。

据绑定(Data Binding)-Part2

在之前我们做了一个简单的Twitter客户端,但是简单地介绍ViewHolder实现,可能没有充分地让你明白Data Binding的使用方法。那么我们现在就来看看怎么样将Data Binding引入到项目中。

首先我们要在工程目录下的gradle脚本添加依赖:

在要在使用Data Binding的module下的gradle脚本中添加依赖:

你会发现在后面这个gradle脚本中没有添加data binding依赖——它实际上只是在构建项目的时候附加的工具。

你应该在这个操作方法中领悟到一些东西:实际上Data Binding只是一个代码生成工具,它会在build项目的时候生成一些绑定View和数据对象的模板代码。

在我们的例子中,它解析目标是layout/status_item.xml中的节点。根据布局文件的文件名,它会自动生成一个数据绑定类StatusItemBinding,我们在StatusViewHolder使用的就是这个神秘的类。

之后Data Binding将包装去掉,由于在StatusItemBinding类中已经解析出了属性,它同时也会移除节点,只剩下RelativeLayout。换句话说,它将这个文件变回了普通的XML layout文件,并添加了一个数据绑定类实时更新其中的内容。

我们再重温一下StatusViewHolder的代码,现在应该明白一点它的运作机制了吧:

DataBindingUtil.bind(itemView)方法会在build的时候自动生成。这时候我们需要做的是在bind(Status status)中调用StatusItemBinding的setter方法,将我们在中声明的数据对象(.data.Status)赋值给它。之后我们要显式地调用bind(Status status)方法将数据实体与它绑定。

你可以从我们的例子中初步看出数据绑定的效果:

part-1

这一切都运作的非常好,就是一个含有三个子view的布局被绑定了,data binding看起来也没为我们省去很多工作,也只是省去了findView与setText()两个操作而已。但是它所能做的并不仅仅是这样!可能有人注意到了我们同时从twitter的API中获取了头像的url,layout中我们没有对ImageView进行绑定。在下一章中我们将会引入Glide来加载图像,并将它与Data Binding结合起来。

本文章主要用于解释原理,没有添加额外代码。前文中的例子在这里可以看到。

Data Binding 的使用之一:简单的数据绑定

android中Data Binding的简单使用
  • yeah0126
  • yeah0126
  • 2017年02月06日 17:00
  • 791

数据绑定(data binding )1

数据绑定(Data Binding)-Part1 原文链接 : Data Binding – Part 1原文作者 : Mark Allison译文出自 : 开发技术前线 www.devtf...
  • linhaosheng123456
  • linhaosheng123456
  • 2015年11月19日 16:27
  • 275

数据绑定(data binding)2

据绑定(Data Binding)-Part2 原文链接 : Data Binding – Part 2原文作者 : Mark Allison译文出自 : 开发技术前线 www.devtf....
  • linhaosheng123456
  • linhaosheng123456
  • 2015年11月19日 16:32
  • 309

数据绑定(Data Binding)

数据绑定(Data Binding)   数据绑定是把一个值或一组值映射到用户界面控件的过程,这个数据并不一定是来自关系型数据库,通常是来自于程序之外的系统,访问数据,并把它转换复杂的绑定状态的过...
  • hadstj
  • hadstj
  • 2014年05月09日 09:12
  • 706

angularjs数据绑定(data binding)

Title {{ 100 }} webstorm是个好东西,推荐使用!!...
  • KinseyGeek
  • KinseyGeek
  • 2016年08月27日 00:48
  • 288

数据绑定(data binding)3

数据绑定(Data Binding)-Part3 原文链接 : Data Binding – Part 3原文作者 : Mark Allison译文出自 : 开发技术前线 www.devtf...
  • linhaosheng123456
  • linhaosheng123456
  • 2015年11月19日 16:37
  • 377

Data Binding(数据绑定)---学习笔记

使用前提 添加Data Binding 到gradle构建文件里 android { .... dataBinding { enabled = true ...
  • AxtonSun
  • AxtonSun
  • 2016年09月23日 19:27
  • 490

Android Data Binding 技术

Data Binding即数据绑定,Data Binding 库实现在布局文件中实现数据绑定申明,使数据的变化引起视图的自动更新,减少了逻辑代码,在Android中可以很方便的实现MVVM的开发模式。...
  • jmq_0000
  • jmq_0000
  • 2015年06月28日 00:21
  • 8326

XAML数据绑定(Data Binding)

XAML数据绑定(Data Binding)
  • u014621518
  • u014621518
  • 2016年11月24日 13:34
  • 515

android数据绑定之Data Binding

(1)工具:       Android studio 1.3.0或更高 (2)在build.gradle中引入:       例如:       android {            ......
  • m0_37825532
  • m0_37825532
  • 2017年08月25日 14:52
  • 59
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据绑定(data binding)
举报原因:
原因补充:

(最多只允许输入30个字)