2013-07-19 4 views
2

Прошу прощения, если это слишком глупо и просто, но я не могу изложить каждый вариант. Это даже не реальное программирование. Но у меня есть несколько строк в инструкции switch, которую я использую несколько раз. Я не могу придумать, каким образом я могу хранить весь этот код (эти строки) и повторно использовать каждый раз, когда захочу.Повторно использовать ту же самую справку несколько раз

 case 0: 
      bcolor=Color.rgb(240, 255, 255);//Azure 
      break; 
     case 1: 
      bcolor=Color.BLACK; 
      break; 
     case 2: 
      bcolor=Color.BLUE; 
      break; 
     case 3: 
      bcolor=Color.rgb(165, 42, 42);//Brown 
      break; 
     case 4: 
      bcolor=Color.rgb(255, 127, 50);//Coral 
      break; 
     case 5: 
      bcolor=Color.rgb(00, 255, 255);//cyan 
      break; 
     case 6: 
      bcolor=Color.rgb(255, 00, 255);//Fuchsia 
      break; 
     case 7: 
      bcolor=Color.rgb(255, 215, 00);//Gold 
      break; 
     case 8: 
      bcolor=Color.GRAY; 
      break; 
     case 9: 
      bcolor=Color.GREEN; 
      break; 
     case 10: 
      bcolor=Color.rgb(173, 255, 47);//Green Yellow 
      break; 
     case 11: 
      bcolor=Color.rgb(00, 255, 00);//Lime 
      break; 
     case 12: 
      bcolor=Color.MAGENTA; 
      break; 
     case 13: 
      bcolor=Color.rgb(80, 00, 00);//Maroon 
      break; 
     case 14: 
      bcolor=Color.rgb(80, 80, 00);//Olive 
      break; 
     case 15: 
      bcolor=Color.rgb(255, 165, 00);//Orange 
      break; 
     case 16: 
      bcolor=Color.rgb(255, 192, 203);//pink 
      break; 
     case 17: 
      bcolor=Color.rgb(80, 00, 80);//purple 
      break; 
     case 18: 
      bcolor=Color.RED; 
      break; 
     case 19: 
      bcolor=Color.rgb(244, 196, 30);//Saffron 
      break; 
     case 20: 
      bcolor=Color.rgb(192, 192, 192);//Silver 
      break; 
     case 21: 
      bcolor=Color.rgb(238, 82, 238);//Violet 
      break; 
     case 22: 
      bcolor=Color.WHITE; 
      break; 
     case 23: 
      bcolor=Color.YELLOW; 
      break; 

Я должен использовать все эти кожухи выключателей в нескольких условиях переключения. Невозможно связать их в какой-либо ярлыке или что-то в этом роде. и просто называть их, когда я хочу использовать ...

ответ

0

Еще одно оптимальное решение, которое я видел и использовал, - это сохранить все эти значения на карте (постоянная сложность времени для поиска):

public static Map<Integer, Integer> colorMap = new HashMap<Integer, Integer>(); 

static 
{ 
    colorMap.put(0, Color.rgb(240, 255, 255)); 
    colorMap.put(1, Color.BLACK); 
    colorMap.put(2, Color.BLUE); 
    colorMap.put(3, Color.rgb(165, 42, 42)); 
    colorMap.put(4, Color.rgb(255, 127, 50)); 
    colorMap.put(5, Color.rgb(00, 255, 255)); 
    colorMap.put(6, Color.rgb(255, 00, 255)); 
    colorMap.put(7, Color.rgb(255, 215, 00)); 
    colorMap.put(8, Color.GRAY); 
    colorMap.put(9, Color.GREEN); 
    colorMap.put(10, Color.rgb(173, 255, 47)); 
    colorMap.put(11, Color.rgb(00, 255, 00)); 
    colorMap.put(12, Color.MAGENTA); 
    colorMap.put(13, Color.rgb(80, 00, 00)); 
    colorMap.put(14, Color.rgb(80, 80, 00)); 
    colorMap.put(15, Color.rgb(255, 165, 00)); 
    colorMap.put(16, Color.rgb(255, 192, 203)); 
    colorMap.put(17, Color.rgb(80, 00, 80)); 
    colorMap.put(18, Color.RED); 
    colorMap.put(19, Color.rgb(244, 196, 30)); 
    colorMap.put(20, Color.rgb(192, 192, 192)); 
    colorMap.put(21, Color.rgb(238, 82, 238)); 
    colorMap.put(22, Color.WHITE); 
    colorMap.put(23, Color.YELLOW); 
} 


public static int getColor(int lookup) 
{ 
    int color = colorMap.get(lookup); 
    return color == null ? 0 : color; 
} 
+0

Спасибо большое. Это идеально для меня .... Это то, что я хотел :) – VipulKumar

+0

@ user2591556 рад, что я мог бы помочь! Обязательно принимайте этот ответ, если он хорошо работает для вас (вы получите +2 репутацию). – Phil

2

Оберните этот код в функцию и вызвать функцию:

public int getColor(int i) 
{ 
    switch(i) { 
     case 0: 
      return Color.rgb(240, 255, 255);//Azure 
     case 1: 
      return Color.BLACK; 
     case 2: 
      return Color.BLUE; 
     case 3: 
      return Color.rgb(165, 42, 42);//Brown 
     case 4: 
      return Color.rgb(255, 127, 50);//Coral 
     case 5: 
      return Color.rgb(00, 255, 255);//cyan 
     case 6: 
      return Color.rgb(255, 00, 255);//Fuchsia 
     case 7: 
      return Color.rgb(255, 215, 00);//Gold 
     case 8: 
      return Color.GRAY; 
     case 9: 
      return Color.GREEN; 
     case 10: 
      return Color.rgb(173, 255, 47);//Green Yellow 
     case 11: 
      return Color.rgb(00, 255, 00);//Lime 
     case 12: 
      return Color.MAGENTA; 
     case 13: 
      return Color.rgb(80, 00, 00);//Maroon 
     case 14: 
      return Color.rgb(80, 80, 00);//Olive 
     case 15: 
      return Color.rgb(255, 165, 00);//Orange 
     case 16: 
      return Color.rgb(255, 192, 203);//pink 
     case 17: 
      return Color.rgb(80, 00, 80);//purple 
     case 18: 
      return Color.RED; 
     case 19: 
      return Color.rgb(244, 196, 30);//Saffron 
     case 20: 
      return Color.rgb(192, 192, 192);//Silver 
     case 21: 
      return Color.rgb(238, 82, 238);//Violet 
     case 22: 
      return Color.WHITE; 
     case 23: 
      return Color.YELLOW; 
     default: 
      return 0; 
    } 
} 
+0

Спасибо. Я создавал метод void, поэтому он не работал. теперь он отлично работает ... – VipulKumar

0

Что-то вроде этого:

public int getColor(int option){ 
    switch(option){ 
    // switch statement in here 
    } 
    return bcolor; 
} 

И теперь вы можете позвонить это так:

int option = 12 // some option 
int myColor = getColor(option); 
0

Если они являются единственными случаями в инструкции switch, вы можете поместить их в статическую функцию tha t возвращает целое число, а затем вызывает его (bcolor = MyClass.getColor (int switchVariable))

2

Сначала было бы разумно определить ваши цвета в файле XML.

Так создать этот файл: res/values/colors.xml

И добавить цвета, как это:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="azure">#f0ffff</color> 
    <color name="brown">#a52a2a</color> 
</resources> 

Итак, то вы можете использовать их как:

R.color.azure

http://developer.android.com/guide/topics/resources/more-resources.html#Color

+0

Но тогда мне придется писать каждый случай каждый раз, когда я его использую. У меня есть такие же цветные случаи, как 5 раз в моем приложении.поэтому мне придется писать все 25 цветов (case0 до case 24) каждый раз. – VipulKumar

0

Как basdwarf сказал

Wrap этот код в функции и вызов функции.

Вы можете сделать это (я не беру все свои дела):

private void awesomeColorFunction() { 
     case 0: 
      bcolor=Color.rgb(240, 255, 255);//Azure 
      break; 
     case 1: 
      bcolor=Color.BLACK; 
      break; 
     case 2: 
      bcolor=Color.BLUE; 
      break; 
} 

затем вызвать его в коде просто так:

awesomeColorFunction(); 

Но самый умный способ, конечно, как сказал Pewiity, чтобы поместить ваши цвета в файл xml

+0

Я не могу этого сделать. он показывает «Синтаксическая ошибка на токене« случай », утверждают, что« – VipulKumar

+0

. Плохо, просто забыл добавить строку переключения. Просто используйте ответ Бадварда, он его обновил ;-) – WhiskThimble

Смежные вопросы