2013-12-04 3 views
0

Как изменить эту кодировку в массив? Потому что я нашел этот шаг слишком длинным. Я новичок в этом, поэтому вы можете мне помочь. Спасибо.Изменить, если условие else в массиве

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); 
     } 
    } 
+0

Этот код работает, так зачем беспокоиться? Это достаточно быстро и дает правильный результат. «Не исправляйте это, если оно не сломано». –

+2

В более актуальном примечании https://codereview.stackexchange.com –

+0

Не можете ли вы сохранить тип 'R.drawable ... ', а не' num1'? – Bathsheba

ответ

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. Это многословно, да, но довольно ясно.

+0

Спасибо, сэр. Но это только часть кодирования. Мне придется кодировать это число до 10 для каждой переменной. Так будет долго? –

+0

@amln_ndh Вы имеете в виду инициализацию? Как бы вы избежали этого, когда они являются членами класса и должны быть явно названы для доступа? – Zong

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); 
} 
Смежные вопросы