数据绑定的用法
import语法
 
<data>
<import type="android.view.view"/>
</data>
 
如果类名相同,可以启用别名
<import type="android.view.view" />
<import type ="com.example.real.estate.View" alias="Vista" />
 
import 集合类型
<data>
<import type="com.example.User"/>
<import type ="java.util.List"/>
<variable name="user" type="User"/>
<variable name ="userList" type="List<User>"/>
</data>
 
使用类的静态方法
<data>
<import type="com.example.MyStringUtils" />
<variable name ="user" type="com.example.User" />
</data>
..
<TextView
android:text = "@{MyStringUtils.capitalize(user.lastName)}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
传递数据到 Include layout
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<data>
<variable name="user" type="com.example.User"/>
</data>
<LinearLayout
android:orientation ="vertical"
android:layout_width="match_parent"
android:layout_height ="match_parent"
<include layout="@layout/name" bind:user="@{user}" />
<include layout ="@layout/contact" bind:user="@{user}" />
</LinearLayout>
</layout>
 
绑定的表达式
绑定的表达式里面的语法,基本上与java语言里的相同
支持语法
Mathematical + - / * %
String concatenation +
Logical && ||
Binary & | ^
Unary + = ! ~
Shift >> >>> <<
Comparison == > < >= <=
instanceof
Grouping()
Literals - character ,String ,numeric,null
Cast
Method calls
Field access
Array access[]
Ternary operator ?:
不支持的语法有
this super new
对待空指针的处理
表达好似不会抛出空指针的异常,对于空指针的访问都返回的是 null,比如表达式 @[user.name],
user是null,访问user.name返回的也是null,不会抛出空指针异常。
Null Coalescing操作符
Null Coalescing 操作符(??)会根据左右两侧是否是null 进行选择
如果左侧的不为null ,则选择左侧,为null 选择右侧:
android:text ="@{user.displayName ?? user.lastName}"
等同于:
android:text ="@{user.displayName !=null? user.displayName : user.lastName}"
Null Coalescing ?? 会根据左右两侧是否为null进行选择
 
android:text ="@{user.displayName??user.lastName}"
==>
android:text ="@{user.displayName!=null ? user.displayNmae : user.lastName}"
 
 
=======================================================
 
访问集合类型
防伪类型中的元素可以使用 []符号来进行访问
<data>
<import type="android.util.SparseArray"/>
<import type="java.util.Map" />
<import type="java.util.List"/>
 
<variable name ="list" type="List<String>"/>
<variable name ="sparse" type="SparseArray<String>" />
<variable name ="map" type="Map<String,String>" />
<variable name="index" type="int" />
<varibale name="key" type="String" />
</data>
..
android:text ="@{list[index]}"
android:text="@{sparse[index]}"
android:text="@{map[key]}"
 
===========================================================================
访问 Resource
android:padding ="@{large?@dimen/largePadding:@dimen/samllPadding}"
android:text = "@{@string/nameFormat(firstName,lastName)}"
android:text = "@{@plurals/bananaCount}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

DataBinding初探 数据绑定的用法 ,import 集合类型,绑定的表达式,访问集合类型2的更多相关文章

  1. 集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误。

    集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误. 解决的方法是添加类型的判断.      LinkedList接口(在代码的使用过程中 ...

  2. SpringMVC由浅入深day02_1课程安排_2包装类型pojo参数绑定_3集合类型绑定

    springmvc第二天 高级知识 复习: springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器: ...

  3. 配置错误 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项

    错误提示: 配置错误 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项 配置文件 \\?\D:\www\abc\web.config 出现 ...

  4. 问题.NET--win7 IIS唯一密钥属性“VALUE”设置为“DEFAULT.ASPX”时,无法添加类型为“add”的重复集合

    问题现象:.NET--win7 IIS唯一密钥属性“VALUE”设置为“DEFAULT.ASPX”时,无法添加类型为“add”的重复集合 问题处理: 内容摘要:    HTTP 错误 500.19 - ...

  5. redis:order set有序集合类型的操作(有序集合)

    1. order set有序集合类型的操作(有序集合) 有序集合是在无序集合的基础上加了一个排序的依据,这个排序依据叫score,因此声明一个集合为有序集合的时候要加上score(作为排序的依据) 1 ...

  6. redis:set集合类型的操作(无序集合)

    1. set集合类型的操作(无序集合) 集合具有无序性(没有顺序).确定性(描述是确定的).唯一性(没有重复的元素) 1.1. sadd key member [member ...] 语法:sadd ...

  7. 定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素, 添加另一个集合,删除元素,判断集合中是否包含一个元素, 判断是否为空,清除集合, 返回集合里元素的个数等常用操作。

    package com.lanxi.demo2; import java.util.HashSet; import java.util.Iterator; import java.util.Set; ...

  8. Table转换成实体、Table转换成实体集合(可转换成对象和值类型)

    /// <summary> /// Table转换成实体 /// </summary> /// <typeparam name="T">< ...

  9. IIS错误:在唯一密钥属性“fileExtension”设置为“.mp4”时,无法添加类型为“mimeMap”的重复集合项

    之前的IIS配置中,.mp4类型的文件默认无法访问,所以个人在IIS7.5的mime类型中增加了.mp4的类型的支持,但问题是需要每台机器中增加这些设置,不利于团队协作,于是,只好将这些修改体现在代码 ...

随机推荐

  1. WPF Invoke与BeginInvoke的区别

    Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托. Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句 ...

  2. 杭电acm 1098题

    Problem Description Ignatius is poor at math,he falls across a puzzle problem,so he has no choice bu ...

  3. 8、linux-数字计算

    bash内置了对整数四则运算的支持,但是并不支持浮点运算 bc命令是一种支持任意精度的交互执行的计算器语言,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下 在bc工作环境下,可以使用以下计 ...

  4. ps -ef | grep java 输出的具体含义是什么?

      uid        pid    ppid # PID 这个程序的 ID 下面的 PPID 则是父程序的 ID: PS是LINUX下最常用的也是非常强大的进程查看命令 常见的使用方法是检查一个进 ...

  5. vivado中使用debug不能连接到vcse_server

    打开 Xilinx Design Tools -> ISE Design Suite 14.7 -> Accessories -> ISE Design Suite 64 Bit C ...

  6. linux学习第一周小结

    这几天学习linux课程,安装环境,遇到不会的查询资料,在这个过程中发现了很多有意思的网页,看到了一些不一样的内容,现在对linux的学习兴趣增强了许多.学习解决问题也是很有意思的事情,解决问题的过程 ...

  7. 图像标注工具labelImg使用方法

    最近在做打标签的工作,为了与大家参考学习,总结了在windows的环境下,基于anaconda的图像标注工具labellmg的一种使用方法! 1 搭建anaconda 以前写过怎么搭建anaconda ...

  8. 洛谷P1066 2^k进制数

    P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. ( ...

  9. 洛谷P3966 [TJOI2013]单词(后缀自动机)

    传送门 统计单词出现次数……为啥大家都是写AC自动机的嘞……明明后缀自动机也能做的说…… 统计出现次数这个就直接按长度排序然后做个dp就好,这是SAM的板子的要求啊,不提了 然后考虑怎么让所有串之间隔 ...

  10. 洛谷P3527 [POI2011]MET-Meteors(整体二分)

    传送门 整体二分 先二分一个答案,判断是否可行,把可行的全都扔到左边,不可行的扔到右边 判断是否可行用树状数组就行 具体细节看代码好了 整体二分细节真多……也可能是我大脑已经退化了? //minamo ...