Android DateBinding 简单入门实践

前言

最近找到实习,接手的工作也是公司现有的项目,里面用到了不少自己以前没涉及的SDK和设计模式
于此做下笔记分享经验

DateBingding简介

DataBinding是一个support library,所以它可以支持所有的android sdk,最低可以到android2.1(API7)。
使用DataBinding需要Android Gradle插件的支持,版本至少在1.5以上,需要的Android studio的版本在1.3以上。

首先我们要检查下是否安装了support library
Tool-> SDK Manager -> SDK Tools

Android DateBinding 简单入门实践_第1张图片

没有就安装一下,之后我们在module级别的build.gradle上进行配置
Android DateBinding 简单入门实践_第2张图片

android {
    ....
    dataBinding {
        enabled = true
    }
}

开始使用

使用DataBinding的layout files和普通的非DataBinding布局文件是有一些区别的
使用了DataBinding 的layout



    
        
    
    

        

很容易发现,使用Databinding是通过来嵌套我们的布局的
而变量user作为被绑定的数据,在layout文件中是这样描述和使用的:


  

layout中view的属性值通过"@{}"这样的语法表达方式和数据user实现绑定

 

定义数据绑定的Data对象

定义一个bean类,如:

package com.example.zain.databindingdemo;

public class User {

    private String firstName;
    private String lastName;

    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
}

绑定数据

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        User user = new User("Zhuang","Zain");
        binding.setUser(user);
    }
}

很容易发现用法也有一些变化
首先是

ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);

这个相当于

setContentView(R.layout.activity_main);

用来实现了layout与Activity的绑定
而且使用了DataBinding后就不用findViewById()来一个个绑定了
代码简介度up
效果:


Android DateBinding 简单入门实践_第3张图片

这就是DataBinding最简单的应用了

可能遇到的问题

找不到ActivityMainBinding

首先要知道一点,对应Activity 的Binding 是自动生成的
其命名规范为对应的layout 名字从下划线改成驼峰式再加上Binding
如MainActivity 对应的 layout 名字为 activity_main.xml
那么自动生成的 Bingding 命名为 ActivityMainBinding
如果没找到,请rebulid project
一次不行那就多来几次

你可能感兴趣的:(Android DateBinding 简单入门实践)