DataBinding variable变量的声明与使用

来源:互联网 发布:网络音乐黑名单 百度云 编辑:程序博客网 时间:2024/06/05 01:53

variable变量的声明

databinding 对应的根布局是以<layout></layout> 标签开始的,如果在布局中的控件需要应用数据填充,你需要定义数据和数据变量

variable 标签就是约定数据的引用对象

语法为<variable name="变量名" type="类型"/>

如:

 <data>        <variable            name="user"            type="com.xuan.asange.databindingdemo.User" />    </data>

还可以用 <import> 标签来引入数据类型

如:

<data>        <import type="com.xuan.asange.databindingdemo.User" />        <variable            name="user"            type="User" />    </data>

而对于java.lang.*包下面的所有类,不需要显示导入,编译器默认导入,直接写就好

如:

 <data>        <variable            name="e"            type="Exception" />        <variable            name="s"            type="String" />    </data>

variable 变量的使用

语法@{变量名或者对象的属性 或者逻辑运算}

如:

<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android">    <data>        <import type="com.xuan.asange.databindingdemo.User" />        <variable            name="user"            type="User" />        <variable            name="s"            type="String" />        <variable            name="isMan"            type="Boolean" />    </data>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical">        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@{user.name}" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@{String.valueOf(user.age)}" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@{s}" />        <CheckBox            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:checked="@{isMan}" />    </LinearLayout></layout>


绑定数据

上面布局文件这样虽然引用了,但是并未填充数据,数据的刷新交给databinding

DataBindingUtil.setContentView(        this, R.layout.activity_main);
给activity加载布局,并建立连接,返回对应xml的binding对象 名字趋同与对应的activity

如:


biding对象提供对应的数据填充方法(setXXX,这xxx对应在布局文件中声明的变量),只要执行这个方法,就会刷新UI

如:

  ActivityMainBinding binding = DataBindingUtil.setContentView(                this, R.layout.activity_main);        binding.setS("这是个字符串");        binding.setIsMan(true);        User user = new User("阿三哥", 27);        binding.setUser(user);

这样就加载布局并刷新UI,看看效果吧



静态变量与静态方法的使用

如使用app的版本名称

<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android">    <data>        <import type="com.xuan.asange.databindingdemo.BuildConfig" />    </data>        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@{BuildConfig.VERSION_NAME}" /></layout>

静态方法的使用

package com.xuan.asange.databindingdemo;/** * Description * Company * author  youxuan  E-mail:xuanyouwu@163.com * date createTime:16/12/14 * version */public class StringUtils {    public static String getVersionName() {        return BuildConfig.VERSION_NAME;    }}

<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android">    <data>        <import type="com.xuan.asange.databindingdemo.StringUtils" />    </data>        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@{StringUtils.getVersionName()}" /></layout>


0 0