数据绑定:如果属性不为空,则设置属性

2024-02-04

无法理解...仅当变量字段不为空时如何设置视图的某些属性?
例如

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <variable
            name="item"
            type="com.test.app.Item" />
    </data>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_centerVertical="true"
            android:layout_margin="16dp"
            android:src="@{item.getDrawable()}"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginEnd="16dp"
            android:layout_marginLeft="72dp"
            android:layout_marginRight="16dp"
            android:layout_marginStart="72dp"
            android:layout_toLeftOf="@id/action"
            android:layout_toStartOf="@id/action"
            android:orientation="vertical">

            <TextView
                android:id="@+id/text1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:textColor="@color/black_87"
                android:textSize="16sp"
                android:text="@{item.getTitle()}"/>

            <TextView
                android:id="@+id/text2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:autoLink="web|email"
                android:linksClickable="false"
                android:singleLine="true"
                android:textColor="@color/black_54"
                android:textSize="14sp"
                android:text="@{item.getSubtitle()}"/>


        </LinearLayout>

    </RelativeLayout>
</layout>

Item 的某些字段可以为 null,并且我不会不必要地调用布局视图的方法。我不会得到NullPointerException。仅当属性不为空时,如何设置属性?
附:对不起英语。


数据绑定通常通过检查 NullPointerException 并分配默认值(例如 null)来避免 NullPointerException,即使item在你的例子中它本身是空的。

但是 null 检查项目属性的基本示例:

android:text='@{item.title != null ? user.title : ""}'

或者使用“空合并运算符”。空合并运算符 (??) 如果左操作数不为空,则选择左操作数;如果为空,则选择右操作数。

android:text='@{item.title ?? ""}'

注意title or getTitle没关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据绑定:如果属性不为空,则设置属性 的相关文章

随机推荐

  • 修改glm函数以采用R中用户指定的链接函数

    In glm在 R 中 默认链接函数为Gamma家人是inverse identity and log 现在对于我的特定问题 我需要使用伽玛回归和响应Y以及修改后的链接函数 其形式为log E Y 1 于是我考虑修改一些glmR 中的相关函
  • 在启动过程中程序正常退出。 gdb 不会在断点处中断

    我在尝试使用 gdb 调试任何程序的任何代码上都会收到此 gdb 错误 这是重现错误的最简单过程 创建一个main cpp包含以下内容的文件 int main return 0 Run g g main cpp Run gdb a out
  • 如何在创建表中创建非聚集索引?

    Create table FavoriteDish FavID int identity 1 1 primary key not null DishID int references Dishes DishID not null Celeb
  • 有没有办法让跟踪显示 Kogito 中为 DMN 执行的决策顺序?

    我终于运行了我的 dmn quarkus 示例示例 是否有一个属性可以启用跟踪 以便打印执行的决策序列 我注意到 当我为 DMN 模型提供不正确的 JSON 时 Kogito 会做出详细响应 告诉我哪个决策失败了 这太棒了 是否有一个属性可
  • 实体框架代码优先 - 非主键字段的外键

    我有两张表 如下所示 dbo ReviewType ReviewTypeId INT PRIMARY KEY ShortName CHAR 1 Unique Index Description dbo Review ReviewId INT
  • 等待 Casper.js 中的 URL 更改?

    有一个waitForUrl 功能在Casper js 但是有可能吗waitForUrlChange in Casper js 我的意思是检测到变化this getCurrentUrl 价值 我无法预测新的 url 值 它可以是任何东西 有一
  • 多个进程上的 fs.createWriteStream

    如何实现多个 Node js 进程写入同一个文件的系统fs createWriteStream 这样它们就不会覆盖数据 看起来 fs createWriteStream 的默认设置是在调用该方法时清除文件 我的目标是清除一次文件 然后让所有
  • MongoDB:聚合并展平数组字段

    在使用关系数据库 SQL Server MySQL Oracle Informix 28 年之后 我已转向 MongoDB 过去两周进展缓慢 我想提出几个问题来证实我的想法 我的文档如下所示 忽略此问题的分组 id xyz 800 site
  • emberjs 1.0.0pre4 如何将上下文对象传递给资源“...Index”路由?

    在一个简单的 ember 应用程序中 我有一个带有索引模板的资源 详细信息 在应用程序索引模板中 我有一个调用的按钮transitionTo detail obj 在索引控制器上 其中obj是被单击的内容项 这通过obj as the mo
  • ruby 中的反引号和单引号错误消息 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么 ruby 在错误消息中使用反引号和单引号 bad method NameError undefined local variable o
  • Android获取外部存储绝对路径

    我想下载一些文件并将它们保存到手机 平板电脑的内部存储中 已在 Samsung Galaxy Note 2 和 Galaxt Tab 10 1 上试用 当我使用 storage sdcard0 在他们身上 代码运行成功 但是当我使用Gala
  • Require.js 忽略 baseUrl

    好吧 这让我发疯 所以也许有人可以指出我正确的方向 我使用最新的 require js 和 jquery 作为我的模块加载器 我正在使用data main属性指向一个配置文件baseUrl 当我尝试加载模块时baseUrl被忽略 并且 re
  • Flash:距 MovieClip 最近的点

    我需要限制一个点内DisplayObject艺术家给我的 我让它工作 但仅适用于光标仍在内部的情况bounds 有限对象称为limited function onSqMouseMove event MouseEvent if bounds
  • 在画布中移动按钮

    当鼠标悬停在 UIElement 上并且用户按下 Ctrl 键时 以下代码应该在画布中移动 UIElement void keydown Object sender KeyEventArgs e if e Key Key LeftCtrl
  • 如何运行本地 Windows 应用程序并将输出通过管道传输到浏览器

    我有 Windows 应用程序 EXE 文件是用 C 编写并使用 MS Visual Studio 构建的 它将 ASCII 文本输出到标准输出 我希望增强 ASCII 文本以包含有限的 HTML 和一些链接 我想调用此应用程序 EXE 文
  • 将向量列表转换为计数数据帧[重复]

    这个问题在这里已经有答案了 我有一个存储在如下列表中的字符向量列表 basket1 lt c Apple Orange Banana Apple Apple Grape basket2 lt c Grape Grape Grape Grap
  • 如何获取适配器内的视图高度以创建大小的位图?

    我将自定义 CursorAdapter 与自定义项一起使用 我需要视图高度来调整资源文件夹中位图的大小 并将此调整大小的位图设置为列表项中的 ImegeView Override public void bindView View view
  • 在 Firefox 中检测缩放

    我想检测浏览器是否放大或缩小 并不真正关心知道该值 但我认为无论如何都需要在决策过程中找到它 我已经阅读了很多关于该主题的其他 SO 帖子 但是没有一个给出的解决方案适用于 FF 尽管有 IE7 8 和 chrome 解决方案 哦 我不能使
  • 如何强制在派生类中调用基类构造函数?

    我相当确定基本的 C 问题 如果我有一个带有不带参数的构造函数的基类 并且只初始化一些受保护的成员 如果派生类与参数匹配 它是否也会立即调用此基构造函数 一厢情愿但不太可能的想法 如果不是 则为有没有办法强制它从派生类自动调用所述基构造函数
  • 数据绑定:如果属性不为空,则设置属性

    无法理解 仅当变量字段不为空时如何设置视图的某些属性 例如