DataBinding基本使用(1)

本文都是接合其他作者的总结,再加上自己实际操作中遇到的一些问题,来综合编写。

DataBinding的配置

因为网上一篓筐,就直接上代码

android {
   ...
    //核心配置代码在这里
    dataBinding {
        enabled = true
    }
}

就这样三行代码,DataBinding就配置好了。 真的是So easy 妈妈那什么~~~

四个标签的使用

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <data>
        <import type="android.view.View"></import>
        <variable
            name="tv1data"
            type="String"></variable>
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.scs.myapplication.MainActivity">
    </LinearLayout>
</layout>

很直观,我们可以看到四个标签



  • 1.其实在DataBinding中,它必须是最外层的标签,是根布局,里面有且只能包裹一个子View,就像Scrollview。
    2.xmlns:android=”http://schemas.android.com/apk/res/android”
    xmlns:app=”http://schemas.android.com/apk/res-auto”
    这两个命名控件一定要加上
    3.layout标签的直接子标签不能是merge,否则报错。
    4.fragment标签不支持dataBinding表达式,即在fragment标签中使用任何dataBinding表达式都会报错
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable
            name="data"
            type="String"></variable>
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <fragment
            android:layout_width="match_parent"
            android:tag="@{data}"
            android:layout_height="match_parent"></fragment>
    </LinearLayout>
</layout>

查看源码就可知道原因

else if ("fragment".equals(nodeName)) {
    if (XmlEditor.hasExpressionAttributes(parent)) {
        L.e("fragments do not support data binding expressions.");
    }
    continue;
}

  • 1.这个标签,其实就是用来承载数据的,在其内部可以定义多个标签
    2.标签,有且只能定义一个
    3.有个class数据,就是用来定义,编译出的binding的类的位置
    下图就是我未定义class,默认的路径,可以看出有四个布局文件,使用了DataBinding
    深度截图20170916173117.png

<import
            type="com.example.scs.myapplication.StudentBean"
            alias="student1">
</import>
<import
            type="com.example.scs.myapplication.StudentBean"
            alias="student2">
</import>

有两个属性,type就是要引用类的位置,alias就是别名。
别名的用途如上所示,当定义了多个同type的import的时候,就是要用别名去区分,不然就要出大事情
-

<variable
            name="data"
            type="String">
</variable>
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:text="@{data}"
            android:layout_height="match_parent" />
    </LinearLayout>

标签可谓是DataBinding机制的核心之一,是java代码和xml的枢纽。可以理解为要绑定的变量,name就是变量的名字,type就是变量的类型。
如上述代码所示,TextView就绑定了data数据。

好了 基本的概念的陈述完了,欲知详情请看DataBinding(2)

若某些地方写错,或者理解错,请大家指出,共同进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值