数据绑定中 if else 语句中的两种不同 return 类型

Two different return types in if else statement in data binding

我正在尝试使用数据绑定在 TextView 中设置文本。我正在使用 if else 语句,如果值为 true,我想将 String 设置为 TextView,在另一种情况下,我想分配 String 资源的 id。我的代码:

android:text="@{object.isTrue ? object.getString : object.getStringId}"

但是当我尝试这样做时,我收到错误消息,指出无法将 Integer 转换为 String。

当我尝试像这样直接分配这个字符串资源时一切正常:

android:text="@{object.getStringId}"

是否可以在 if else 语句中使用两种不同的 return 类型?

是的,您可以在第二个上使用 Context.getString(),这样两者都是一个字符串。我认为这应该有效:

android:text="@{object.isTrue ? object.getString : context.getString(object.getStringId)}"

您不必导入上下文,它是自动导入的。