DataBinding初探 数据绑定的用法 ,import 集合类型,绑定的表达式,访问集合类型2

数据绑定的用法

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 ="@{[email protected]/largePadding:@dimen/samllPadding}"

android:text = "@{@string/nameFormat(firstName,lastName)}"

android:text = "@{@plurals/bananaCount}"

时间: 2024-12-18 03:22:21

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

属性类型:数据类型,访问器类型的坑

ECMA5弄了一个新东西, 就是用户可以通过Object.defineProperty配置属性的可写,可配置,可枚举, 让我们开发者可以定义一些属性,这些属性有点像native的赶脚 比如,我们平常定义一个对象这样子就可以了: var obj0 = { name : "nono" }; 我们也可以用新的方式,Object的属性设置方法defineProperty设置属性, 如果用户没有传enumberable, configurable, writable的值, 默认是false, 也

读取数据库返回泛型集合 把DataSet类型转换为List&lt;T&gt;泛型集合

转自 http://www.cnblogs.com/wuhuisheng/archive/2012/04/26/2471733.html 1 /// <summary> 2 /// 获取UserInfo泛型集合 3 /// </summary> 4 /// <param name="connStr">数据库连接字符串</param> 5 /// <param name="sqlStr">要查询的T-SQL&

初探swift语言的学习笔记(可选类型?和隐式可选类型!)

可选类型.隐式可选类型 其次swift还引入一个较有趣的初始值设置语法使用"?"操作符及"!"号操作符 如:"var optionalString: String? = "Hello" optionalString == nil var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = op

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

如果IIS中已经有设置.xaml和 .xap这两个扩展名,那么IIS就会提示:在唯一密钥属性“fileExtension”设置为“.xaml”(或者.xap)时,无法添加类型为“mimeMap”的重复集合项. <staticContent> <mimeMap fileExtension=".json" mimeType="application/x-javascript" /> </staticContent> 具体的提示信息是根

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

问题现象:.NET--win7 IIS唯一密钥属性“VALUE”设置为“DEFAULT.ASPX”时,无法添加类型为“add”的重复集合 问题处理: 内容摘要: HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 错误摘要 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 DefaultDocumentModule 通知 Ex

set集合类型的操作(无序集合)——redis

1. set集合类型的操作(无序集合) 集合具有无序性(没有顺序).确定性(描述是确定的).唯一性(没有重复的元素) 1.1. sadd key member [member ...] 语法:sadd key member [member ...] 作用:往集合key中添加元素 返回值:添加元素的个数 例: 127.0.0.1:6379> sadd fruit apple banana pear (integer) 3 127.0.0.1:6379> sadd num 1 1 (integer

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

在用visual studio 打开一个asp.net mvc 项目时,ctrl+f5运行,发现页面无法加载图片.js.json文件. 按F12查看错误,发现500错误.打开报错的js文件,提示: IIS错误:在唯一密钥属性"fileExtension"设置为".mp4"时,无法添加类型为"mimeMap"的重复集合项 参考园内博客的解决方案:在web.config文件中添加: <staticContent> <remove f

Java中已经数组类型,为什么还要提供集合?

数组的优点: 数组的效率高于集合类 数组能存放基本数据类型和对象:集合中只能放对象 数组的缺点: 不是面向对象的,存在明显的缺陷 数组长度固定且无法动态改变:集合类容量动态改变 数组无法判断其中实际存了多少元素,只能通过length属性获取数组的申明的长度 数组存储的特点是顺序的连续内存:集合的数据结构更丰富 JDK 提供集合的意义: 集合以类的形式存在,符合面向对象,通过简单的方法和属性调用可实现各种复杂操作 集合有多种数据结构,不同类型的集合可适用于不同场合 弥补了数组的一些缺点,比数组更灵

Java基础知识强化之集合框架笔记04:Collection集合的基本功能测试

1. Collection集合的基本功能测试: 1 package cn.itcast_01; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 /* 7 * 集合的由来: 8 * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 9 * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识