Android 数据绑定上的字符串比较
String comparison on Android Data Binding
我正在尝试与 android XML 数据绑定进行字符串比较,但我没有得到正确的结果。
在代码中评估我的表达式,我尝试 notice.action == "continue"
,这是错误的。当然,在数据绑定中,这也是错误的。
android:textColor='@{ notice.action == "continue" ? @color/enabledPurple : @color/disabledGray}'
只有当我通过代码 notice.action.equals("continue")
时它才会成立。这是预期的行为。我的问题是我无法使用数据绑定表达式来完成此操作,因为它不会像 equals
这样的 运行 方法。我该怎么做才能将比较表达式替换为另一个有效的表达式?
我正在使用 this guide。
编辑:
我错了,方法在 XML 中是允许的。这样做的:
android:textColor='@{ notice.action.equals("continue") ? @color/enabledPurple : @color/disabledGray}'
尝试加入xml
<data> <import type="String"/> </data>
可能有助于解决 .equals()
可以通过两种方式完成:-
1. xml 里面的第一种方法:-
android:textColor="@{notice.action.equals(`continue`) ? @color/enabledPurple : @color/disabledGray }"
2。第二种方式(以编程方式)在 xml 内部:-
app:setColor="@{notice.action}"
inside activity or custom class : -
@BindingAdapter("setColor")
public static void setTextColor(TextView textView, String s) {
Context context = textView.getContext();
textView.setTextColor(s.equals("continue") ? context.getResources().getColor(R.color.enabledPurple) : context.getResources().getColor(R.color.disabledGray));
}
无需将字符串 class 导入布局文件。
要检查两个字符串是否具有相等的值,应该使用equals()
方法。
=
用于判断两个字符串是否指向同一个引用对象
解决方案:
android:textColor="@{notice.action.equals(`continue`) ? @color/enabledPurple : @color/disabledGray }"
'continue'是char类型,所以要改成String来和notice.action比较。
android:textColor="@{notice.action.equals(String.valueOf(`continue`)) ? @color/enabledPurple : @color/disabledGray }"
我正在尝试与 android XML 数据绑定进行字符串比较,但我没有得到正确的结果。
在代码中评估我的表达式,我尝试 notice.action == "continue"
,这是错误的。当然,在数据绑定中,这也是错误的。
android:textColor='@{ notice.action == "continue" ? @color/enabledPurple : @color/disabledGray}'
只有当我通过代码 notice.action.equals("continue")
时它才会成立。这是预期的行为。我的问题是我无法使用数据绑定表达式来完成此操作,因为它不会像 equals
这样的 运行 方法。我该怎么做才能将比较表达式替换为另一个有效的表达式?
我正在使用 this guide。
编辑: 我错了,方法在 XML 中是允许的。这样做的:
android:textColor='@{ notice.action.equals("continue") ? @color/enabledPurple : @color/disabledGray}'
尝试加入xml
<data> <import type="String"/> </data>
可能有助于解决 .equals()
可以通过两种方式完成:-
1. xml 里面的第一种方法:-
android:textColor="@{notice.action.equals(`continue`) ? @color/enabledPurple : @color/disabledGray }"
2。第二种方式(以编程方式)在 xml 内部:-
app:setColor="@{notice.action}"
inside activity or custom class : -
@BindingAdapter("setColor")
public static void setTextColor(TextView textView, String s) {
Context context = textView.getContext();
textView.setTextColor(s.equals("continue") ? context.getResources().getColor(R.color.enabledPurple) : context.getResources().getColor(R.color.disabledGray));
}
无需将字符串 class 导入布局文件。
要检查两个字符串是否具有相等的值,应该使用equals()
方法。
=
用于判断两个字符串是否指向同一个引用对象
解决方案:
android:textColor="@{notice.action.equals(`continue`) ? @color/enabledPurple : @color/disabledGray }"
'continue'是char类型,所以要改成String来和notice.action比较。
android:textColor="@{notice.action.equals(String.valueOf(`continue`)) ? @color/enabledPurple : @color/disabledGray }"