数据绑定的用法
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. linux命令-tar工具详解

    把文件和目录打成一个包 文件打包 [root@wangshaojun ~]# tar -cvf 1.tar 1.txt 123 234 ///-c创建 -v可视化 -f file放最后面1.txt12 ...

  2. RN控件之ProgressBarAndroid进度条

    /** * Sample React Native App * https://github.com/facebook/react-native */ 'use strict'; import Rea ...

  3. pig语法学习 FOREACH GENERATE group AS

    深入浅出,转一个 转载必须注明出处:http://www.codelast.com/ 转载地址 本文可以让刚接触pig的人对一些基础概念有个初步的了解. 本文大概是互联网上第一篇公开发表的且涵盖大量实 ...

  4. Entity Framework Code-First(11):Configure One-to-One

    Configure One-to-Zero-or-One Relationship: Here, we will configure One-to-Zero-or-One relationship b ...

  5. The instance of entity type 'xxxx' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked.

    一.问题描述 问题:The instance of entity type 'xxxx' cannot be tracked because another instance with the sam ...

  6. 转:PHP性能:序——谈ab(Apache Bench)压力测试工具

    PHP性能:序——谈ab(Apache Bench)压力测试工具 ab(Apache  Bench)是啥? ab是Apache自带的一个压力测试软件,可以通过ab命令和选项对某个URL进行压力测试.a ...

  7. PAT1089【归并排序】

    这题略...恶心.. 他说归并排序依次是相邻有序两块合并,而一向打惯了递归??? #include <bits/stdc++.h> using namespace std; typedef ...

  8. go语言实战教程:实战项目资源导入和项目框架搭建

    从本节内容开始,我们将利用我们所学习的Iris框架的相关知识,进行实战项目开发. 实战项目框架搭建 我们的实战项目是使用Iris框架开发一个关于本地服务平台的后台管理平台.平台中可以管理用户.商品.商 ...

  9. 为CentOS下的Docker安装配置python3【转】

    * 安装python3以及docker yum install docker docker pull centos service docker start systemctl enable dock ...

  10. IDEA开发Spark的漫漫摸索(二)

    1 新建Maven项目 特别提醒,Maven项目中有GropId和ArtifactId.GroupId是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构.一般Gru ...