DataBinding系列一、绑定数据到view

为什么要使用data binding

google说它可以最小化业务代码和UI之间的工作量,事实上也确实如此,它的原理是在xml中写UI代码,对view的属性进行表达式求值实现动态数据。

配置要求

  1. Android 2.1 (API level 7+)
  2. gradle plugin 1.5+
  3. Android Studio 1.3 +

导入项目

在app module的build.gradle中加入

    dataBinding {
        enabled = true
    }

注:如果有其他模块使用了dataBinding,那么在app module中也同样要加入。

基本使用

使用一个简单例子来了解基本使用方法,例子是绑定数据到view上面显示。

1.修改布局文件

为用于数据绑定的布局文件和通常的不一样,它需要用layout节点作为根节点,并且后面紧跟data节点

<!-- 根节点是layout -->
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 紧跟data -->
    <data>
    <!-- 定义一个在布局文件中可以访问的对像user,它的类型是User -->
        <variable
            name="user"
            type="com.heyy.databingexample.User" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <!-- 使用@{user.name}来访问User对像中的name信息 -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@{user.name}"/>
    </LinearLayout>
</layout>

2.定义数据对像类型

对应布局文件中定义的variable,实现数据对像类型User。
view有三种从数据对像中获取数据的方法,如下:

public class User {
    public final String name; //优先级第三,直接使用属性名

    public User(String name) {
        this.name = name;
    }

    //优先级第一,get方法
    public String getName() {
        return "0"+name;
    }

    //优先级第二,属性名方法
    public String name(){
        return "1"+name;
    }
}

3.绑定数据到view

这个简单点直接在onCreate中绑定就好了

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //这里删除了原来的setContentView方法,使用了新的方法
        //DataBindingUtil.setContentView创建了一个ViewDataBinding,后面可以用来设置数据
        //ActivityMainBinding是自动生成的,命名规则和xml名称有关系,比如activity_main.xml会产生ActivityMainBinding
        ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        //创建一个数据
        User user = new User("he");
        //将数据绑定到view
        activityMainBinding.setUser(user);
    }

编译错误

如果项目中出现如下错误:

Error:(7, 47) error: package com.heyy.databindingexample.databinding does not exist

那么需要检查一下是否使用了android-apt插件,如果使用了请确保版本在1.5+

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值