android -------- Data Binding的使用(一)

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的基本用法,当然还有其它很多的高级用法,更新中...

原文地址:https://www.cnblogs.com/zhangqie/p/9329350.html

时间: 2024-10-24 13:13:39

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

Android Data Binding 技术

Android Data Binding 技术

Android Data Binding

1 引入 如何高效地实现以下界面? 有好几年findViewById实战经验的我,感觉并不难啊.一般会 * 1.先定义一个User的Model类,数据来自JSON解析: * 2.创建一个xml,随后在xml中布局完所有View,对头像.标题.积分.登录按钮一个id: * 3.在Activity中通过findViewById获取到头像ImageView.标题TextView.积分TextView.登录Button,然后给Button设置监听器,再根据登陆状态展示对应数据: 实现如下: * User

Android Data Binding实战(一)

在今年Google I/O大会上,Google推出Design Library库的同时也推出了Android Data Binding,那么什么是Data Binding?其名曰数据绑定,使用它我们可以轻松实现MVVM(模型-视图-视图模型)模式,来实现应用之间数据与视图的分离.视图与业务逻辑的分离.数据与业务逻辑的分离,从而达到低耦合.可重用性.易测试性等好处,那么我们首先先来看看什么是MVVM模式. 我自己画了一张图来帮助理解,就不多描述了,毕竟重点是Data Binding的使用 通过上图

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

Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点: 1.使用MVVM模式,让整个项目结构清晰明了 2.通过ViewModel连接View和Model,使得View与Model层解耦,分层后各司其职,维护方便 3.易于项目的测试 4.可以根据id自动生成View的对象,再也不用findViewById了 好了,说了好处,当然也有不太好的地方,毕竟是

Android Data Binding 系列(二) -- Binding与Observer实现

写在前面 上篇文章 Android Data Binding 系列(一) – 详细介绍与使用 介绍了 Data Binding 的基础及其用法,本文接上篇,结合DataBindingDemo 来学习下 Data Binding 的实现. 绑定实现 Activity在inflate layout时,通过DataBindingUtil来生成绑定,从代码看,是遍历contentView得到View数组对象,然后通过数据绑定library生成对应的Binding类,含Views.变量.listeners

Android Data Binding Library 官方文档(译)

地址:https://developer.android.google.cn/topic/libraries/data-binding/index.html 本文地址:http://blog.csdn.net/jjwwmlp456/article/details/54915981 Data Binding Library (数据绑定库),旨在减少绑定应用程序逻辑和布局所需的一些耦合性代码 最低支持Android 2.1 (API Level 7) 构建环境 使用gradle插件1.5-alpha

Android Data Binding语法解析(二)

上篇我们知道了Data Binding的最简单的用法,那么Data Binding其中最为重要也是最复杂的其实就是在xml布局文件中给对应的控件进行数据绑定了,接下来就一一说明Data Binding的使用各个场景的语法. 我们以User类这个Model为例: public class User { private String userName; private String userPassword; private boolean isExist; public String getUse

完全掌握Android Data Binding

转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0603/2992.html 来源 https://github.com/LyndonChin/MasteringAndroidDataBinding 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 本教程是跟着 Data Bind

Android Data Binding高级用法-Observable、动态生成Binding Class

设置View的id 虽然说Data Binding这种分层模式使得我们对数据的传递简单明了,一般情况下我们可以不设置View的id,不使用findViewById即可对View进行数据上一系列的操作,不过有时候根据情况我们需要对某些View设置id,但是还是可以不findViewById即可得到该控件的对象,因为设置id后ViewDataBinding类会自动生成对应的控件对象,如: <layout xmlns:android="http://schemas.android.com/apk