我有这3行代码,我用它来保存listview中的项目状态,但我的问题是,最后一行代码只能被执行。你能帮我解决一下吗?这是代码块:
holder.viewName.setTextColor((priority.equals("Low")? Color.BLUE: Color.GRAY ) );
holder.viewName.setTextColor((priority.equals("Medium")? Color.GREEN: Color.GRAY ) );
holder.viewName.setTextColor((priority.equals("High")? Color.RED: Color.GRAY ) ); // items in this state condition only gets executed in the listview, the rest are ignored and set to gray.
有没有办法可以将代码逻辑加在一起,这样可以调用所有3个条件?谢谢
答案 0 :(得分:3)
所有3行都被执行,但是你总是用下一行覆盖文本颜色。改为使用条件:
if (priority.equals("Low")) {
holder.viewName.setTextColor(Color.BLUE);
} else if (priority.equals("Medium")) {
holder.vieName.setTextColor(Color.GREEN);
} else if (priority.equals("High")) {
holder.viewName.setTextCOlor(Color.RED);
} else {
holder.viewName.setTextColor(Color.GRAY);
}
编辑:Java中的字符串切换语句尚不可用吗?
答案 1 :(得分:1)
首先我会使用equalsIgnoreCase,因为没有什么比失去数小时寻找区分大小写的错误更令人沮丧了^^
您的问题是您的代码仅限于最后一个语句
holder.viewName.setTextColor((priority.equals("High")? Color.RED: Color.GRAY ) );
当低或中的情况是它们被设置为正确的颜色然后到达高的测试将其切换回灰色时会发生什么
您希望将代码更改为交换机或if语句。
color = Color.GRAY;
if (priority.equals("Low")) {
color = Color.BLUE;
} else if (priority.equals("Medium")) {
color = Color.GREEN;
} else if (priority.equals("High")) {
color = Color.RED;
}
holder.viewName.setTextColor(color);
最后你不需要ternair(条件)?val1:val2
使用2种颜色并不是一个坏主意,但使用4种颜色会消失。