美文网首页
DataBinding基本使用(1)

DataBinding基本使用(1)

作者: notrynobug | 来源:发表于2017-09-16 17:43 被阅读0次

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

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>

很直观,我们可以看到四个标签<layout><data><import><variable>


  • <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;
}
  • <data>
    1.<data>这个标签,其实就是用来承载数据的,在其内部可以定义多个<import><variable>标签
    2.<data>标签,有且只能定义一个
    3.<data>有个class数据,就是用来定义,编译出的binding的类的位置
    下图就是我未定义class,默认的路径,可以看出有四个布局文件,使用了DataBinding


    深度截图20170916173117.png
  • <import>

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

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

  • <variable>
<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>

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

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

相关文章

  • Databinding资料

    1. DataBinding的基本使用(一) 2. DataBinding的基本使用(二) 3. DataBind...

  • DataBinding基本使用(1)

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

  • DataBinding

    dataBinding的使用 一、databinding的配置方法 二、databinding的基本使用 三、da...

  • Databinding基本使用和原理

    一、Databinding基本使用 实体类 布局文件 基本使用 二、Databinding原理分析 Databin...

  • DataBinding设置集合数据,如Map和List

    之前的文章介绍了DataBinding最基本的使用,[DataBinding的简单使用]http://www.ji...

  • DataBinding基本使用

    初始配置 [x] Android Plugin for Gradle 1.5.0-alpha1 或 更高版本(或需...

  • DataBinding基本使用

    简介 Databinding 是2015年谷歌推出的在android上实现mvvm模式的实现方式,即实现了View...

  • Data Binding基础用法

    1.DataBinding配置2.DataBinding的使用3.UI/事件绑定 1.DataBinding配置 ...

  • DataBinding使用全面详解

    一、DataBinding使用 1.使用环境 DataBinding是一个support library,所以它可...

  • DataBinding基本使用(2)

    咱们直接点,直接上实战,把常用的标签的用会了,用熟了总的有以下几点 数据绑定的几种方式 点击事件绑定的几种方式 双...

网友评论

      本文标题:DataBinding基本使用(1)

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