将if else条件更改为数组

时间:2013-12-04 15:08:50

标签: android arrays if-statement

如何将此编码更改为数组?因为我发现这一步太长了。我是新手,所以你可以帮助我。谢谢。

if(num2 == 1)
    {
        display.setImageResource(R.drawable.one);
        if (num1 == 1)
        {
            display2.setImageResource(R.drawable.one);
        }
        else if (num1 == 2)
        {
            display2.setImageResource(R.drawable.two);
        }
        else if (num1 == 3)
        {
            display2.setImageResource(R.drawable.three);
        }
        else if (num1 == 4)
        {
            display2.setImageResource(R.drawable.four);
        }
        else if (num1 == 5)
        {
            display2.setImageResource(R.drawable.five);
        }
    }

2 个答案:

答案 0 :(得分:2)

如果您可以控制R对象,我强烈建议您将drawable成员存储为数组。但如果你坚持,

Drawable[] drawables = new Drawable[...];
drawables[1] = R.drawable.one;
drawables[2] = R.drawable.two;
...
if(num2 == 1) {
    int index = (num1 >= 1 && num1 < drawables.length) ? num1 : 1;
    display2.setImageResource(drawables[index]);
}

虽然坚持使用当前代码或使用switch可能会更好。它很冗长,是的,但非常清楚。

答案 1 :(得分:0)

一种选择是使用LevelListDrawable

您可以像这样定义Drawable:

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="1" android:drawable="@drawable/one />
    <item android:maxLevel="2" android:drawable="@drawable/two" />
    <item android:maxLevel="3" android:drawable="@drawable/three" />
    <!-- ... -->
</level-list>

在XML或代码中,将display2的背景设置为此Drawable。

然后,您可以将代码简化为:

if(num2 == 1) {
    display2.setImageLevel(num1);
}