Android Data Binding 入门

第一次写博客,废话不多说,直接进入正题
1)介绍
Data Binding即数据绑定,Data Binding 库实现在布局文件中实现数据绑定申明,使数据的变化引起视图的自动更新,减少了逻辑代码,在Android中可以很方便的实现MVVM的开发模式。

这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件。
Data Binding库不仅灵活而且广泛兼容- 它是一个support库,因此你可以在所有的Android平台最低能到Android 2.1(API等级7+)上使用它。

2)构建环境
Data Binding 插件需要Gradle 1.3以上及Android Studio 1.3.
你的app要使用Data Binding,需要添加Data Binding到gradle构建文件里,如下:

android {

    dataBinding {
        enabled = true    
    }    
}

3)Data Binding Layout文件
Data Binding layout文件有点不同的是:起始根标签是layout,接下来一个data元素以及一个view的根元素。这个view元素就是你没有使用Data Binding的layout文件的根元素。

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
    <data>
     <!--name 自行命名即可,最好具有实际意义-->
        <variable name="userInfo"
     <!--type 对应com.zero.databindingtest 下的 UserInfo  实体类-->
       type="com.zero.databindingtest.UserInfo">

        </variable>
    </data>
    <LinearLayout
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.zero.databindingtest.MainActivity">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{userInfo.userName}"/><!-- 实现数据的绑定-->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:text="@{userInfo.userTel}"/><!-- 实现数据的绑定-->
    </LinearLayout>
</layout>

在data节点里面的variable声明实现数据与UI的绑定,变量为UI提供数据,通过@{ } 可以直接把Java 中定义的属性赋值给UI:@{userInfo.userName}
数据对象
任何Java对象对象(POJO)可以做数据绑定。

public class UserInfo {
        private String userName;
        private String userTel;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserTel() {
        return userTel;
    }
    public void setUserTel(String userTel) {
        this.userTel = userTel;
    }
}

4)绑定数据
默认情况下,一个绑定类会根据布局文件的名称生成一个绑定类,下面代码就是activity_main.xml生成的类ActivityMainBinding.(生成类名字规则:布局文件去掉下划线首字母大写+Binding)这个类持有所有从布局文件中的View对应的属性(例如:user变量),并且知道如何指派变量值到绑定的表达式中。

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding  binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        UserInfo  info = new UserInfo();
        info.setUserName("LILei");
        info.setUserTel("13888888888");
        binding.setUserInfo(info);
    }

5)运行结果
数据已经成功绑定到对应textview上了
这里写图片描述

更多关于Data Binding 高级使用请见后续更新

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值