代码之家  ›  专栏  ›  技术社区  ›  irobotxx

请帮助解决此listview问题

  •  2
  • irobotxx  · 技术社区  · 15 年前

    我有这3行代码,用来在listview wjen滚动中保存项目的状态,但我的问题是,最后一行代码只能执行。你能帮我解决这个问题吗。这是代码块:

    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个条件?.. 谢谢您

    2 回复  |  直到 15 年前
        1
  •  3
  •   RoflcoptrException    15 年前

    所有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);
    }
    

    编辑:字符串的Switch语句在Java中还不可用,对吗?

        2
  •  1
  •   gevorg Dathan    10 年前

    首先,我会使用equalsIgnoreCase,因为没有什么比浪费时间寻找区分大小写的错误更令人沮丧的了^^

    您的问题是,您的代码仅限于最后一个语句

    holder.viewName.setTextColor((priority.equals("High")? Color.RED: Color.GRAY ) );
    

    当低或中的情况是,它们被设置在正确的颜色,然后到达高的测试,切换回灰色

    您希望将代码更改为switch或else 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);  
    

    最后你不需要这里的空气(条件)?值1:val2

    用两种颜色不是个坏主意,但用四种颜色就不那么有趣了