DataBinding(04)-导入

作者: 代码多哥 | 来源:发表于2023-08-26 11:18 被阅读0次

    DataBinding库提供了导入、变量和include等功能。导入可以方便在引用布局文件中引用类;变量允许您描述可在绑定表达式中使用的属性;Includes允许您在整个应用程序中重用复杂的布局。

    Imports

    Imports允许您轻松地在布局文件中的引用类,就像在代码中一样。data元素内部可以使用零个或多个import元素。以下代码示例将View类导入布局文件:

    <data>
        <import type="android.view.View"/>
    </data>
    

    通过导入View类,可以从绑定表达式中引用它。以下示例显示了如何引用View类的VISIBLE和GONE常量:

    <TextView
       android:text="@{user.lastName}"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/>
    

    类型别名alias

    当存在类名冲突时,其中一个类可能会重命名为别名。以下示例将com.example.realstate包中的View类重命名为Vista:

    <import type="android.view.View"/>
    <import type="com.example.real.estate.View" alias="Vista" />
    

    您可以使用Vista引用com.example.real.estate.View和View可以用于引用布局文件中的android.View.View。

    导入其他类

    导入的类型可以用作变量和表达式中的类型引用。以下示例显示了用作变量类型的“User”和“List”:

    <data>
        <import type="com.example.User"/>
        <import type="java.util.List"/>
        <variable name="user" type="User"/>
        <variable name="userList" type="List&lt;User>"/>
    </data>
    

    注意:Android Studio尚未处理导入,因此导入变量在IDE中还不能自动补全,但您的应用程序仍可以编译,您可以通过在变量定义中使用完全限定的名称来解决IDE问题。

    也可以使用导入的类型强制转换表达式的一部分。以下示例将连接属性强制转换为User类型:

    <TextView
       android:text="@{((User)(user.connection)).lastName}"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
    

    在表达式中引用静态字段和方法时,也可以使用导入的类型。以下代码导入MyStringUtils类并引用其大写方法:

    <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"/>
    

    就像在java代码中一样,java.lang.*是自动导入的。

    相关文章

      网友评论

        本文标题:DataBinding(04)-导入

        本文链接:https://www.haomeiwen.com/subject/ftobmdtx.html