数据绑定的用法
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}"

转载于:https://www.cnblogs.com/qiankundai/p/6898800.html

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

  1. 【Groovy】集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )

    文章目录 一.使用 [] 创建集合 1.使用 [] 创建 ArrayList 集合 2.使用 [] 创建 LinkedList 集合 二.访问集合中的元素 1.集合赋初值 2.使用下标访问集合元素 ( ...

  2. html中el表达式遍历list,使用EL表达式访问集合

    在 EL 表达式中,同样可以获取集合的数据,这些集合可能是 Vector.List.Map.数组等.可以在 JSP 中获取这些对象,继而显示其中的内容,其语法格式如下: ${collection [序 ...

  3. lamda获取参数集合去空_lambda表达式对集合的遍历

    lambda表达式对集合的遍历 引言: 从去年年末就一直想好好看一下lambda表达式,可是一直没有静下心来看. 这次项目里用的对集合操作几乎都是通过lambda表达式方式的.没办法,就只好去学习了. ...

  4. java表达式的类型_java – 此表达式的目标类型必须是功能界面

    这是编译器的一个角落.为了确定是否应用将参数包装到数组中或简单地传递数组,它需要知道最后一个参数的类型,然而,在lambda表达式的情况下,它需要调用方法签名来确定类型.但是很明显,应该发生什么,因为 ...

  5. python中集合用什么表示_python中集合用法大全

    序言: 集合中各元素间是无序的,相同元素在集合中唯一存在.即 集合是无序组合,它没有索引和位置的概念,但可变集合中的元素是可以动态增加或删除的. 集合应用场景: 去重:如列表  去重. 关系测试:判断 ...

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

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

  7. 在唯一密钥属性“name”设置为“Application”时,无法添加类型为“add”的重复集合项...

    配置一个网站后,出现[在唯一密钥属性"name"设置为"Application"时,无法添加类型为"add"的重复集合项]这个错误,记得之前 ...

  8. 无法添加类型为“mimeMap”的重复集合项

    无法添加类型为"mimeMap"的重复集合项 文章目录 无法添加类型为"mimeMap"的重复集合项 1.问题描述 2.问题原因 3.问题解决 1.问题描述 在 ...

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

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28904115 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

最新文章

  1. RIP和OSPF双点双向重发布_综合实验
  2. SQL server 2005中无法新建作业(Job)的问题
  3. python退出程序-Python程序退出方式小结
  4. 互联网公司面试必问的mysql题目(下)
  5. vue2.0 #$emit,$on的使用
  6. 文本编辑器_国外程序员最爱的5种文本编辑器
  7. 长期对着电脑是对身体很哟影响的
  8. 基于JAVA+Servlet+JSP+MYSQL的在线鲜花商城系统
  9. 21. 包含min函数的栈(C++版本)
  10. 高性能mysql感觉并不好_高性能MySQL读书笔记(4)
  11. oracle vm virtualbox无网络连接_VirtualBox 安装 Windows 2000/XP 测试
  12. 小米CC9BL解锁、root方法测试
  13. 弘辽科技:淘宝开店类别怎么选择?淘宝开店如何选类目?
  14. python夜曲编程_夜曲编程——我毕业了!!!
  15. matlab绘制单位球的三维网格图,matlab绘制三维网格图
  16. python any函数_python中的any函数是什么?如何使用any函数?
  17. 微软自带dns服务器,微软改进Windows 10加密DNS服务器配置(DoH) 现在设置起来更方便...
  18. Python生物医学专业案例 - 细胞计数
  19. Shell脚本中获取命令运行结果、特殊变量使用、条件判断等常用操作
  20. 视频文本检索之CLIP4Clip

热门文章

  1. 内存分配_go内存分配管理
  2. 密码密文 android,Android密码明文密文切换
  3. java记录每个元素出现几次_哪位师傅帮用Java我计算出数组中每个元素出现的次数...
  4. jquery的contains如何实现精准匹配
  5. laravel 5.5 顶部带条件分页查询
  6. java数组长度怎么看,威力加强版
  7. 色情图片识别-aip
  8. python生成斐波那契_python学习-生成器(generator)及斐波那契;yield
  9. PHP_crontab 漏洞,shopex 4.8.5.45144 \core\include_v5\crontab.php 远程shell写入漏洞
  10. 企业网络推广期间关于网站分享功能设计有哪些细节需要加以重视?