Android数据绑定条件资源

时间:2015-11-26 19:21:24

标签: android android-databinding

以下是Android数据绑定的典型用法:

plt.ion()

当州采用多个价值观时会变得更难。 修改:使用方法调用中的status属性是使其工作的唯一方法:

android:background="@{isError ? @color/red : @color/white}"

并定义静态方法(没有@Bindable):

android:background="@{Check.getStatusColor(check.status)}"

如果不将嵌套的三元运算符放在XML中(我不会发现它非常优雅,顺便说一句),或者没有传递public int getStatusColor(int status) { switch (status.get()) { case STATUS_OK: return ContextCompat.getColor(context, R.color.success); case STATUS_WARNING: return ContextCompat.getColor(context, R.color.warning); case STATUS_ERROR: return ContextCompat.getColor(context, R.color.error); default: return ContextCompat.getColor(context, R.color.idle); } } 属性,我怎样才能实现这一点?

编辑:添加XML:

check.status

1 个答案:

答案 0 :(得分:5)

我会这样做:

android:background="@{check.getStatusColor()}"

getStatusColorCheck非静态方法,这就是为什么我们可以访问我们的实例字段status

public int getStatusColor() {
    switch (status) {
        case STATUS_OK:
            return ContextCompat.getColor(context, R.color.success);
        case STATUS_WARNING:
            return ContextCompat.getColor(context, R.color.warning);
        case STATUS_ERROR:
            return ContextCompat.getColor(context, R.color.error);
        default:
            return ContextCompat.getColor(context, R.color.idle);
    }
}

这应该有用。