Google推出自己官方的数据绑定框架Data Binding Library 已经很久了,很多企业也在使用

面试的时候也有问到,所以也去学习了一番,特来分享一下,希望对各位有所帮助

描述:

Data Binding 是把数据直接绑定到 XML 文件上,并能实现自动刷新。

Data Binding 减少了代码的耦合性,一些如 findViewById、setText 之类的操作都可以通过绑定实现。

Data Binding 是MVVM模式开发的

Google 官方文档:https://developer.android.google.cn/reference/android/databinding/package-summary

配置:

环境要求:

  1. 系统版本:Android 2.1(API level 7)及以上

  2. Gradle版本:1.5.0-alpha1及以上

  3. Android Studio版本:1.3及以上

在app根目录的build.gradle文件中加入Data Binding配置:

android {
compileSdkVersion 22
buildToolsVersion "27.0.3" dataBinding {
enabled = true
}
.....
}

简单的一个案例 :布局中绑定数据

先写一个实体类

public class Employee {

    public Employee(String frstName,String lastName){
this.frstName = frstName;
this.lastName = lastName;
} private String frstName; private String lastName; public String getFrstName() {
return frstName;
} public void setFrstName(String frstName) {
this.frstName = frstName;
} public String getLastName() {
return lastName;
} public void setLastName(String lastName) {
this.lastName = lastName;
}
}

布局文件 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:bind="http://schemas.android.com/apk/res-auto"> <data>
<variable
name="employee"
type="com.zhangqie.databinding.demo1.Employee"/><!-- 实体类的地址 -->
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
> <TextView
android:id="@+id/tv_name1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/> <TextView
android:id="@+id/tv_name2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{employee.frstName}"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{employee.lastName}"
/>
</LinearLayout>
</layout>

由上面可看出

我们在最外层再套一层 标签layout,里面包含了 data标签和LinearLayout标签

data 标签下面的 variable 定义数据绑定用的实体类

type 里面是完整的带包名的类,
name 自定义一个名称,下面具体绑定的时候就是用的这个名称。

layout标签的定义会默认生成一个数据绑定类 (类名根据文件的名称来生成)

编译一下我就会生成了一个 ActivityMainBinding的类了

之后MainActivity中

public class MainActivity extends AppCompatActivity {

    Employee employee = new Employee("切切歆语","小张");

    ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main); binding = DataBindingUtil.setContentView(this, R.layout.activity_main); //直接访问Id 设置属性
binding.tvName1.setText("小张");
binding.tvName2.setText("歆语"); //传对象绑定数据
//两种方式一样
binding.setEmployee(employee);
//binding.setVariable(com.zhangqie.databinding.BR.employee,employee); }
}

这样看起来是不是方便了很多呢

运行效果:

特点:

MVVM 的实现

提高开发效率

性能高 ,功能强

上面是Data Binding的基本用法,当然还有其它很多的高级用法,更新中...

android -------- Data Binding的使用(一)的更多相关文章

  1. Android Data Binding代码实践(告别findViewById)(四)

    Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点 ...

  2. Android Data Binding实战(一)

    在今年Google I/O大会上,Google推出Design Library库的同时也推出了Android Data Binding,那么什么是Data Binding?其名曰数据绑定,使用它我们可 ...

  3. Android Data Binding Library

    Data Binding Library Data Binding Library是一个支持库,允许您使用声明格式(而不是编程)将布局中的UI组件与应用程序中的数据源绑定. 布局通常在调用UI框架方法 ...

  4. Android Data Binding

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

  5. Android Data Binding(数据绑定)用户指南

    Android Data Binding(数据绑定)用户指南 http://www.jianshu.com/p/b1df61a4df77 https://github.com/LyndonChin/M ...

  6. android data binding jetpack VIII BindingConversion

    android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...

  7. android data binding jetpack VII @BindingAdapter

    android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...

  8. android data binding jetpack VI 清理一些概念。BR 运算表达式

    android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...

  9. android data binding jetpack V 实现recyclerview 绑定

    android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...

  10. android data binding jetpack IV 绑定一个方法另一种写法和参数传递

    android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...

随机推荐

  1. topcoder srm 711 div1 -3

    1.给出$n,k$,求一个大于等于$n$且最小的数字$m$使得$m$的二进制表示中存在连续$k$个1 . 思路:如果$n$满足,答案就是$n$.否则,依次枚举连续1的位置判断即可. #include ...

  2. C# 给类做事件的一般做法

    https://docs.microsoft.com/zh-cn/dotnet/standard/events/how-to-raise-and-consume-events 第一个示例演示如何引发和 ...

  3. tp剩余未验证内容-3

    为什么有时候会 出现 "上传文件保存错误"? public function save($file, $replace=true){ /* 移动文件 */ if (!move_up ...

  4. dh

    -.-- -.. --- -. --- - -.- -. --- .--

  5. IDEA快速变量的快捷键

    假想早期的JDBC需要或许bean的许多字段, 那么IDEA提供了CTRL+ALT+V对该行快速根据变量类型自动生成变量. 此时如果变量标红,需要按一下TAB.

  6. jsp的九大内置对象及作用

    内置对象名          类型                                   request           HttpServletRequest             ...

  7. Druid介绍2

    Druid的发送数据和查询数据 Druid 开篇 - 大数据实时探索性分析平台 官网 Druid 一次海量数据实时处理的实践 使用HDFS作为Druid的deepStorage 在哪里下载druid ...

  8. Wijmo 2017路线图

    2016年是Wijmo团队发展和增长的另一个富有成效的一年.回顾我们2016年的路线图,您可以看到我们交付了我们承诺的一切.让我们回顾一下2016年的亮点: 我们第一个全面支持Angular 2 互操 ...

  9. 【译】第8节---EF Code First中配置类

    原文:http://www.entityframeworktutorial.net/code-first/configure-classes-in-code-first.aspx 前面的章节中我们知道 ...

  10. jQuery 知识点总结

    jQuery 是一个“写的更少,但做的更多”的轻量级JavaScript 库.对于网页开发者来说,学会jQuery是必要的.因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很 ...