一、基本介绍

DataBinding数据绑定库是一种支持库,借助该库,可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。这是官方给出的介绍。

那么为什么要使用DataBinding?

首先,再也不需要使用findViewById()来初始化控件了;

另外,更新UI不再需要切换到UI线程,而是可以通过数据分解映射到各个View。

二、学习教程

https://developer.android.com/topic/libraries/data-binding

三、使用示例

在build.gradle中android闭包中添加配置,即可使用DataBinding库:

  dataBinding {
enabled = true
}

之后可以在activity_main.xml中添加如下布局:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data>
<variable
name="user"
type="com.cy.test.mvvmdatabinding.UserBean" />
</data> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.name}" /> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{String.valueOf(user.age)}" />
</LinearLayout>
</layout>

首先需要注意几个地方:

1、最外层节点为layout

2、添加了data标签,variable顾名思义即变量,指向与该布局对应的数据源,name即变量名,type即是变量类型UserBean,这个变量就是可以与布局当中的每个View一一对应的数据源。

3、text中可以使用text="@{user.name}"直接引用UserBean中的值。

MainActivy.java中的代码:

public class MainActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
UserBean userBean = new UserBean ("张三", 25);
binding.setUser(userBean ); }
}

原有的setContentView(R.layout.activity_main)被注释掉了,

取而代之的是ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

DataBindingUtil是库中的一个类,setContentView(this, R.layout.activity_main)将布局传入,

然后生成一个ViewDataBinding类,ActivityMainBinding继承于ViewDataBinding,初次写入可能会报错,编译以后就可以引入这个类ActivityMainBinding,它通过引入布局文件名称生成。

运行结果如下:

更多思考之后整理吧~~~

DataBinding的用法的更多相关文章

  1. Android Data Binding

    Android官方数据绑定框架DataBinding, 1.什么是DataBinding 2.DataBinding基础用法 3.DataBinding原理 4.表达式 5.null检查 6.incl ...

  2. 关于Android架构那些事

    刚开始,因为业务比较赶,我们也没有进行比较好的顶层设计,对代码的要求也是最低要求——完成功能开发就行了.这种短期设计也就造成了我们代码的扩展性几乎为零,稍微添加一点新功能,都要大动干戈.在后台系统架构 ...

  3. DataBinding(二):DataBinding的基本用法

    转自:DataBinding系列(二):DataBinding的基本用法 1.在xml中引入一些基础变量Variables data 标签中可以有任意数量的 variable 标签.这些变量可以使Ja ...

  4. Control.DataBinding数据绑定简单用法:

    DataBindings的用法: 第一个值:要绑定到TextBox的什么地方 第二个值:数据源是什么 第三个值:应该取数据源的什么属性 第四个值:是否开启数据格式化 第五个值:在什么时候启用数据源绑定 ...

  5. DataBinding初探 数据绑定的用法 ,import 集合类型,绑定的表达式,访问集合类型2

    数据绑定的用法 import语法   <data> <import type="android.view.view"/> </data>   如 ...

  6. android黑科技——完美解决界面逻辑的数据框架DataBinding(最新)的使用(二)

    昨天我们一起学习了dataBinding的基础用法,我想你可能还停留在它只是不用再findViewById,其实不然,今天我们就来扩展延伸,看看这个框架到底有什么魔力让谷歌官方大力推崇.这里还没看昨天 ...

  7. AngularJS学习--- AngularJS中数据双向绑定(two-way data-binding) orderBy step4

    1.切换工作目录 git checkout step- #切换分支,切换到第4步 npm start #启动项目 2.代码 app/index.html Search: <input ng-mo ...

  8. C# Eval在aspx页面中的用法及作用

    Eval( " ")和Bind( " ") 这两种一个单向绑定,一个双向绑定,bind是双向绑定,但需数据源支持 ASP.NET 2.0改善了模板中的数据绑定操 ...

  9. AngularJS中数据双向绑定(two-way data-binding)

    1.切换工作目录 git checkout step-4 #切换分支,切换到第4步 npm start #启动项目 2.代码 app/index.html Search: <input ng-m ...

随机推荐

  1. VelocityTracker简要

    翻译自:http://developer.android.com/reference/android/view/VelocityTracker.html 參照自: http://blog.jrj.co ...

  2. C/C++回调方式系列之一 函数指针和函数回调模式

    一.函数指针 1. 函数的定义 return_type function_name(parameter list) { function_body } return_type: 返回值,函数一定有返回 ...

  3. WPF编游戏系列 之七 动画效果(2)

    原文:WPF编游戏系列 之七 动画效果(2)        上一篇已经对关闭窗口图标进行了动画效果处理,本篇将对窗口界面的显示和关闭效果进行处理.由于所有的动画效果都是针对窗口界面的Canvas,所以 ...

  4. 简单说说Delphi中线程的释放

    线程的释放方式有两种:一种是线程在运行完成后自动释放,一种是手动释放. 无论是那种释放,都应该在线程停止后进行释放. 然而线程的停止也有两种情况:一种是不需要设置标志位,直接完成:一种是由于execu ...

  5. BooleanToColorConverter

    public class BooleanToColorConverter : IValueConverter { public object Convert(object value, Type ta ...

  6. Advanced Installer,搜索注册表,根据注册表选择安装路径

    原文:Advanced Installer,搜索注册表,根据注册表选择安装路径 又停了一段时间没有更新了,今天上博客,发现有位朋友就打包的时候需要搜索注册表(不同版本注册表路径不一致,需要搜索多次来确 ...

  7. ArrayList(1.8)

    public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...

  8. UAC就不能一次添加、永久信任吗?

    每次都要点击确定,感觉好麻烦. 而且阻碍了某些功能的实现.

  9. 配置QtCreator+CDB远程调试环境(用到了符号表) good

    相关环境信息:开发机Win7 x64.远程机器WinXP.调试器是CDB.Qt版本5.2.1 一.部署远程机器环境 我这里用的是虚拟机(Windows XP),根据你要调试的程序选择安装不同架构的Wi ...

  10. 很幽默的讲解六种Socket IO模型 Delphi版本(自己Select查看,WM_SOCKET消息通知,WSAEventSelect自动收取,Overlapped I/O 事件通知模型,Overlapped I/O 完成例程模型,IOCP模型机器人)

    很幽默的讲解六种Socket IO模型(转)本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教. 一:select模型 二:WSAAsyncSel ...