Android Data Binding Library
Data Binding Library
Data Binding Library是一个支持库,允许您使用声明格式(而不是编程)将布局中的UI组件与应用程序中的数据源绑定。
布局通常在调用UI框架方法的activity中定义。例如,下面的代码调用findViewById()来查找一个TextView小部件并将其绑定到viewModel变量的用户名属性:
TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());
下面的示例展示了如何使用Data Binding Library将文本直接分配到布局文件中的小部件上。这样就不需要调用上面显示的Java代码。注意在赋值表达式中使用@{}语法:
<TextView
android:text="@{viewmodel.userName}" />
在布局文件中绑定组件使您可以在activity中移除许多UI框架调用,使它们更简单、更易于维护。这还可以提高应用程序的性能,并有助于防止内存泄漏和空指针异常。
使用以下页面了解如何在Android应用程序中使用数据绑定库。要浏览代码示例,请参见Android Data Binding Library samples
开始
了解如何使开发环境准备好使用数据绑定库,包括支持Android Studio中的数据绑定代码。
布局和绑定表达式
表达式语言允许您通过编写表达式连接变量和布局中的视图。Data Binding Library自动生成用于将布局中的视图与数据对象绑定的类。该库提供了一些特性,如导入、变量和包含,您可以在布局中使用它们。
库的这些特性与现有的布局无缝地共存。例如,在表达式中使用的绑定变量可以定义在UI布局的根元素的同级数据元素中。两个元素都封装在布局标记中,如下面的示例所示:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewmodel"
type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout... /> <!-- UI layout's root element -->
</layout>
使用可观察的数据对象
Data Binding Library提供了类和方法来方便地观察数据的变化。当底层数据源发生更改时,不必担心刷新UI。你可以让你的变量或它们的性质可见。库允许您将对象、字段或集合设置为可观察的。
生成绑定类
Data Binding Library生成绑定类,用于访问布局的变量和视图。这个页面向您展示了如何使用和定制生成的绑定类。
绑定适配器
对于每个布局表达式,都有一个绑定适配器,用于对框架调用设置相应属性或侦听器。例如,绑定适配器可以处理调用setText()方法来设置文本属性,或者调用setOnClickListener()方法来为click事件添加一个监听器。最常见的绑定适配器,如本页面示例中使用的android:text属性的适配器,你可以在android.databinding.adapters包中使用。有关公共绑定适配器的列表,请参见适配器。您还可以创建自定义适配器,如下例所示:
@BindingAdapter("app:goneUnless")
public static void goneUnless(View view, Boolean visible) {
view.visibility = visible ? View.VISIBLE : View.GONE;
}
将布局视图绑定到架构组件
Android支持库包含体系结构组件,您可以使用这些组件设计健壮、可测试和可维护的应用程序。您可以使用带有数据绑定库的体系结构组件来进一步简化UI的开发。
Android Data Binding Library的更多相关文章
- (Android MVVM)使用Data Binding Library(1)
Data Binding Library 用官方提供的Data Binding Library,可以最大限度的减少findViewById(),setOnClickListener()之类的胶水代码, ...
- 告别findViewById(),ButterKnife,使用Google Data Binding Library(1)
Data Binding Library 用数据绑定编写声名性布局,可以最大限度的减少findViewById(),setOnClickListener()之类的代码.并且比起findViewById ...
- Android Data Binding实战(一)
在今年Google I/O大会上,Google推出Design Library库的同时也推出了Android Data Binding,那么什么是Data Binding?其名曰数据绑定,使用它我们可 ...
- android -------- Data Binding的使用(一)
Google推出自己官方的数据绑定框架Data Binding Library 已经很久了,很多企业也在使用 面试的时候也有问到,所以也去学习了一番,特来分享一下,希望对各位有所帮助 描述: Data ...
- Android Data Binding代码实践(告别findViewById)(四)
Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点 ...
- Android Data Binding
Android官方数据绑定框架DataBinding, 1.什么是DataBinding 2.DataBinding基础用法 3.DataBinding原理 4.表达式 5.null检查 6.incl ...
- Android Data Binding(数据绑定)用户指南
Android Data Binding(数据绑定)用户指南 http://www.jianshu.com/p/b1df61a4df77 https://github.com/LyndonChin/M ...
- android data binding jetpack VIII BindingConversion
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- android data binding jetpack VII @BindingAdapter
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
随机推荐
- 【java】之获取HTTP请求的值常用方法
logger.info("销帐完成通知回调,请求URL:"+req.getRequestURI().toString()); InputStream in = req.getInp ...
- Javascript中的原型、原型链(十)
一.原型 每当创建一个函数时,函数就会包含一个prototype属性,这个属性其实相当于一个指针,指向调用该构造函数创建的对象原型. 这个对象原型里面有一个constructor属性,这个属性又指向构 ...
- JavaScript和HTML DOM的区别与联系
JavaScript和HTML DOM的区别与联系 区别: javascript JavaScript 是因特网上最流行的浏览器脚本语言.很容易使用!你一定会喜欢它的! JavaScript 被数百万 ...
- 文字超长隐藏为...ie7不兼容的解决办法
把li里的a设置display:block; 代码如下: html: <ul> <li><span>2014-8-27</span><a href ...
- [UE4]控件模板参数
创建的时候就会变成这样了.
- 在MySQL中实现Rank高级排名函数
MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...
- 第32课 Linux内核链表剖析
1. Linux内核链表的位置及依赖 (1)位置:{linux-2.6.39}\\include\linux\list.h (2)依赖 ①#include<linux\types.h> ② ...
- (转)C#读写共享文件
原文地址:https://www.cnblogs.com/guohu/p/4694515.html using System; using System.Collections.Generic; us ...
- Mysql 中获取刚插入的自增长id的值
insert into user (username,password) VALUES ('); //获取刚插入的自增长id的值 select last_insert_id(); 在MySQL中,使用 ...
- mysql的DATE_FORMAT参数格式
mysql有个字段是DATETIME类型,要实现可以按月统计,该怎么写sql语句?select month(f1) from tt group by month(f1)or select DATE_F ...