2014-10-08 4 views
0

Как упростить метод, который не использует оператор if, и уменьшить количество строк моего кода. Вот как я писал:Как упростить метод, который не использует оператор if

private void RemoveImg() { 
     while (true) { 
      rel_with_images.getChildCount(); 

      if ((number_of_Image== 5) { 
       rel_with_images.removeViewAt(number_of_Image- 1); 
       sp_1 = sp11.play(sp_1 , 1.0F, 1.0F, 0, 0, 1.0F); 
       inta11 = sp11.play(intaa, 1.0F, 1.0F, 0, 0, 1.0F); 
       CheckVibrate(); 
       MainAct c5 = MainAct .this; 
       c5.number_of_Image = (-1 + c5.number_of_Image); 
       break; 
      } 
      if ((number_of_Image== 4) { 
       rel_with_images.removeViewAt(number_of_Image- 1); 
       sp_1 = sp11.play(sp_1 , 1.0F, 1.0F, 0, 0, 1.0F); 
       inta11 = sp11.play(intaa, 1.0F, 1.0F, 0, 0, 1.0F); 
       CheckVibrate(); 
       MainAct c5 = MainAct .this; 
       c5.number_of_Image = (-1 + c5.number_of_Image); 
       break; 
      } 
      if ((number_of_Image== 3) { 
       rel_with_images.removeViewAt(number_of_Image- 1); 
       sp_1 = sp11.play(sp_1 , 1.0F, 1.0F, 0, 0, 1.0F); 
       inta11 = sp11.play(intaa, 1.0F, 1.0F, 0, 0, 1.0F); 
       CheckVibrate(); 
       MainAct c5 = MainAct .this; 
       c5.number_of_Image = (-1 + c5.number_of_Image); 
       break; 
      } 
      if ((number_of_Image== 2) { 
       rel_with_images.removeViewAt(number_of_Image- 1); 
       sp_1 = sp11.play(sp_1 , 1.0F, 1.0F, 0, 0, 1.0F); 
       inta11 = sp11.play(intaa, 1.0F, 1.0F, 0, 0, 1.0F); 
       CheckVibrate(); 
       MainAct c5 = MainAct .this; 
       c5.number_of_Image = (-1 + c5.number_of_Image); 
       break; 
      } 
      if ((number_of_Image== 1) { 
       rel_with_images.removeViewAt(number_of_Image- 1); 
       sp_1 = sp11.play(sp_1 , 1.0F, 1.0F, 0, 0, 1.0F); 
       inta11 = sp11.play(intaa, 1.0F, 1.0F, 0, 0, 1.0F); 
       CheckVibrate(); 
       MainAct c5 = MainAct .this; 
       c5.number_of_Image = (-1 + c5.number_of_Image); 
       break; 
      } 
     } 
} 

number_of_Image является целым числом, которое подсчитывает количество изображений в относительном rel_with_images макета. Код немного большой, если в макете имеется более 30 изображений. Кто-нибудь знает решение? Спасибо

+4

Зачем у вас есть утверждение if? Код в каждом операторе if такой же, насколько я мог бы сказать. Беспредметный оператор if (если я не прочитал его неправильно), просто удалите его. – apmartin1991

ответ

2
private void removeAllImages() { 
    int numberOfImages = rel_with_images.getChildCount(); 

    while (numberOfImages > 0) { 
     removeImageAt(number_of_Image-1) 
     numberOfImages = rel_with_images.getChildCount(); 
    } 
} 

private void removeImageAt(int position) { 
    rel_with_images.removeViewAt(position); 
    sp_1 = sp11.play(sp_1 , 1.0F, 1.0F, 0, 0, 1.0F); 
    inta11 = sp11.play(intaa, 1.0F, 1.0F, 0, 0, 1.0F); 
    CheckVibrate(); 
    MainAct c5 = MainAct .this; 
    c5.number_of_Image--; 
} 
+0

Обратите внимание: я не уверен, что содержимое 'removeImageAt (int)' будет работать/компилироваться - это просто рефакторинг того, что у вас есть в исходном вопросе. – ataulm

+0

Благодарим вас за ответ. ваш код работает, я только что протестировал его, но удалю все виды из макета. метод RemoveImg удаляет только одно изображение за клик пользователя. – ArmsOP

+0

Я исправил его сейчас. (0) removeImageAt (number_of_Image-1) numberOfImages = rel_with_images.getChildCount(); break; } Спасибо – ArmsOP