Android中的Data Binding初探 (二)

发布时间:2019-06-22 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android中的Data Binding初探 (二)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文接《Android中的Data Binding初探 (一)》

数据绑定用法

  • 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 >"http://schemas.android.COM/apk/res/android"
        >"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 &amp; | ^
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}"
  • 访问集合类型
    集合类型中的元素可以使用[]符号来访问
<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"/>
    <variable name="key" type="String"/>
</data>
…
android_text="@{list[index]}"
…
android_text="@{sparse[index]}"
…
android_text="@{map[key]}"
  • 访问Resource
android:padding="@{large? @dimen/largePadding : @dimen/smallPadding}"
android_text="@{@string/nameFormat(FirstName, lastName)}"
android_text="@{@plurals/banana(bananaCount)}"

本文参考谷歌官方Data Binding Guide

本文作者: 阳春面
原文地址:http://www.aswifter.com/2015/07/08/android-data-binding-2/

欢迎关注我的微信公众号,分享Android 开发,IOS开发,Swift开发和互联网内容
微信号:APP开发者

Android中的Data Binding初探 (二)

脚本宝典总结

以上是脚本宝典为你收集整理的Android中的Data Binding初探 (二)全部内容,希望文章能够帮你解决Android中的Data Binding初探 (二)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。