美文网首页
Android DateBinding 简单入门实践

Android DateBinding 简单入门实践

作者: 水天滑稽天照八野滑稽石 | 来源:发表于2018-07-19 11:50 被阅读0次

前言

最近找到实习,接手的工作也是公司现有的项目,里面用到了不少自己以前没涉及的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


没有就安装一下,之后我们在module级别的build.gradle上进行配置
android {
    ....
    dataBinding {
        enabled = true
    }
}

开始使用

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

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="user"
            type="com.example.zain.databindingdemo.User" />
    </data>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.firstName}"/>

        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.lastName}"/>
    </LinearLayout>
</layout>

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

<data>
  <variable name="user" type="com.example.zain.databindingdemo.User"/>
</data>

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

 <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{user.lastName}"/>

定义数据绑定的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
效果:



这就是DataBinding最简单的应用了

可能遇到的问题

找不到ActivityMainBinding

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

相关文章

网友评论

      本文标题:Android DateBinding 简单入门实践

      本文链接:https://www.haomeiwen.com/subject/cemvpftx.html