数据绑定的用法
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. HTTP ERROR

    HTTP 400 – 请求无效HTTP 401.1 – 未授权:登录失败HTTP 401.2 – 未授权:服务器配置问题导致登录失败HTTP 401.3 – ACL 禁止访问资源HTTP 401.4 ...

  2. 在重命名SqlServer数据库时,报5030错误的解决办法

    数据库不能重名名5030的错误,其实很简单原因就是有应用程序正在占用这个连接,使用这样一行命令就可以查询出正在占用的连接 use master select spid from master.dbo. ...

  3. 使用python ftplib包递归下载文件夹及文件

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-06-11 09:35:49 # @Author : Yaheng Wang ...

  4. keras安装windows版

    按照官网成功了.下面没有成功,貌似是 Anacode的问题 http://blog.csdn.net/hweiyi/article/details/70018317 http://blog.csdn. ...

  5. redis学习总结2

    redis配置文件说明:以下这篇文章已经说明的很明白了.感谢~ http://blog.sina.com.cn/s/blog_636415010101970j.html

  6. lsnrctl start错误Linux Error: 29: Illegal seek (翻译:非法谋取)

    现在,想不起来为什么ORACLE的监听,怎么就突然无法起来了呢. 好吧,问题反正就是发生了. lsnrctl start 遇到如下错误, LSNRCTL for Linux: Version 10.2 ...

  7. 【TMF eTOM】业务流程框架介绍

    TMF文档版权信息 Copyright © TeleManagement Forum 2013. All Rights Reserved. This document and translations ...

  8. 利用MVC的Area作为二级域名

    此处使用的域名是我改了系统的hosts文件达到的 测试成功! 全局的注册方式 在Area的注册文件里进行配置 一个Area和一个外部的Controller 废话不多说,提供DEMO 下载地址

  9. Note: EnclaveDB: A Secure Database using SGX

    EnclaveDB uses SGX security properties to secure database operations. Why The cloud database is cont ...

  10. [C++]C,C++中使用可变参数

    可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等.可变参数是实现printf(),sprintf()等函数的关键之处, ...