基于表达式的Android数据绑定
在android的数据绑定语法中,是否可以对表达式的结果执行嵌套三元运算,而无需计算表达式两次: 对于单三元情况,我有以下几点:基于表达式的Android数据绑定,android,android-databinding,Android,Android Databinding,在android的数据绑定语法中,是否可以对表达式的结果执行嵌套三元运算,而无需计算表达式两次: 对于单三元情况,我有以下几点: android:textColor="@{stock.mStockDelta.compareTo(BigDecimal.ZERO) < 0 ? @color/red : @color/green}" 我想知道是否有一种方法可以只使用xml为三个比较结果{-1,0,1}中的每一个设置颜色?可能重复() 对于数据绑定中
android:textColor="@{stock.mStockDelta.compareTo(BigDecimal.ZERO) < 0 ?
@color/red : @color/green}"
我想知道是否有一种方法可以只使用xml为三个比较结果{-1,0,1}中的每一个设置颜色?可能重复()
对于数据绑定中的高级逻辑,您应该将自己的逻辑放入方法中,并在xml中调用它
android:textColor="@{stock.mStockDelta.getColor}"
在getColor方法中执行您自己的逻辑,而不是在xml中设置许多条件。您应该保持xml完全可读。保留java类的逻辑流
android:textColor="@{stock.mStockDelta.getColor > 2 ?( stock.mStockDelta.getColor ==3 ? @color/green :@color/colorPrimary): @color/colorAccent }"
你可以试试这个
android:textColor="@{stock.mStockDelta.compareTo(BigDecimal.ZERO) < 0 ?
@color/red : (stock.mStockDelta.compareTo(BigDecimal.ZERO) > 0 ? @color/green : @color/blue)}"
但不建议这样做,您应该按照George Mount在此中的建议将此逻辑置于视图模型中。您可以参考建议的RRR的答案。