如何更有效地编写此Java逻辑代码?

时间:2015-08-26 16:04:26

标签: java android logic boolean-logic

我的活动中有四个TextView。根据传入的消息,我想更改这四个TextView的格式,以便一个更大和更粗,而其余的更小,并定期设置样式。为此,我创建了两个方法,setTextNormal和setTextBig。为了改变我使用这段代码的数字:

                if (tokens[2].equals("0")) {
                    setTextBig(text1);
                    setTextNormal(text2);
                    setTextNormal(text3);
                    setTextNormal(text4);
                }
                if (tokens[2].equals("1")) {
                    setTextBig(text2);
                    setTextNormal(text1);
                    setTextNormal(text3);
                    setTextNormal(text4);
                }
                if (tokens[2].equals("2")) {
                    setTextBig(text3);
                    setTextNormal(text2);
                    setTextNormal(text1);
                    setTextNormal(text4);
                }
                if (tokens[2].equals("3")) {
                    setTextBig(text4);
                    setTextNormal(text2);
                    setTextNormal(text3);
                    setTextNormal(text1);
                }

请注意,对于每个if语句,其中一个TextView设置为big,其余的设置为normal。它有效,但有没有更有效的方法来设置这些TextViews?

6 个答案:

答案 0 :(得分:2)

制作一组文本变量,例如new EnvironmentVariableSubstitutor(false)

按照其他用户的建议,在开始时将所有文本设置为正常,然后执行以下操作: [text1, text2, text3, text4]

答案 1 :(得分:2)

我建议您更改代码以使用setTextSize(text, boolean big)方法,并按如下方式使用它:

String token = tokens[2];
setTextSize(text1, /*big*/token.equals("0"));
setTextSize(text2, /*big*/token.equals("1"));
setTextSize(text3, /*big*/token.equals("2"));
setTextSize(text4, /*big*/token.equals("3"));

答案 2 :(得分:0)

不确定是否真的更有效,只是先将所有文本设置为正常然后只将特定文本更改为大型作品,例如。

setTextNormal(text4);
setTextNormal(text2);
setTextNormal(text3);
setTextNormal(text1);
if (tokens[2].equals("0")) {
    setTextBig(text1);
} else if (tokens[2].equals("1")) {
    setTextBig(text2);
} else if (tokens[2].equals("2")) {
    setTextBig(text3);
} else if (tokens[2].equals("3")) {
    setTextBig(text4);
}

答案 3 :(得分:0)

也许你可以做那样的事情。

 setTextNormal(text1);
 setTextNormal(text2);
 setTextNormal(text3);
 setTextNormal(text4);

 if (tokens[2].equals("0")) {
     setTextBig(text1);
 } else if (tokens[2].equals("1")) {
     setTextBig(text2);
 } else if (tokens[2].equals("2")) {
     setTextBig(text3);
 } else if (tokens[2].equals("3")) {
     setTextBig(text4);
 }

检查是否可以将文本设置为正常并将其设置为大。

答案 4 :(得分:0)

void setNormal(){
    setTextNormal(text1);
    setTextNormal(text2);
    setTextNormal(text3);
    setTextNormal(text4);
}

switch(tokens[2]){
    case "0":
        setNormal();
        setTextBig(text1);
        break;
    case "1":
        setNormal();
        setTextBig(text2);
        break;
    case "2":
        setNormal();
        setTextBig(text3);
        break;
    case "3":
        setNormal();
        setTextBig(text4);
        break;
    default:
        break;
}

答案 5 :(得分:0)

    if (tokens[2].equals("0")) {
            setTextsOrder(text1, text2, text3, text4);
        } else if (tokens[2].equals("1")) {
            setTextsOrder(text2, text1, text3, text4);
        } else if (tokens[2].equals("2")) {
            setTextsOrder(text3, text2, text1, text4);
        } else if (tokens[2].equals("3")) {
            setTextsOrder(text4, text2, text3, text1);
        }
    }
    . 
    .

    private static void setTextsOrder(String text, String... texts) {
        setTextBig(text);
        for (String textIt : texts) {
            setTextNormal(textIt);
        }
    }