zoukankan      html  css  js  c++  java
  • 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 ="@{large?@dimen/largePadding:@dimen/samllPadding}"
    android:text = "@{@string/nameFormat(firstName,lastName)}"
    android:text = "@{@plurals/bananaCount}"
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    工具:统计jQuery中各字符串出现次数
    读Ext之八(原生事件对象的修复及扩充)
    querySelector和getElementById通过id获取元素的区别
    读Ext之十(解析JSON)
    Safari/Chrome中placeholder属性实现不完整
    读Ext之十一(通过innerHTML创建元素)
    各浏览器中innerHTML实现差异(2)
    读Ext之五(Dom的低级封装)
    读Ext之十二(在各个位置插入元素)
    读Ext之四(事件的低级封装)
  • 原文地址:https://www.cnblogs.com/qiankundai/p/6898800.html
Copyright © 2011-2022 走看看