[英]Android data binding nested ternary on expression
在android的数据绑定语法中,无论如何都无需对表达式进行两次计算就可以对表达式的结果进行嵌套三元:
对于单一三元情况,我有以下几点:
android:textColor="@{stock.mStockDelta.compareTo(BigDecimal.ZERO) < 0 ?
@color/red : @color/green}"
我想知道是否有一种方法可以仅使用xml为三个compareTo结果{-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在此评论中建议的那样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.