2014-10-08 43 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是Integer,它用相对布局rel_with_images来计数图像的数量。当布局中有超过30张图片时,代码有点大。有谁知道解决方案?由于

+4

为什么你的if语句开始吗?据我所知,每个if语句中的代码都是相同的。毫无意义的陈述(除非我读错了),只要删除它。 – apmartin1991 2014-10-08 15:57:44

回答

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 2014-10-08 15:30:22

+0

谢谢你的回应。你的代码工作我只是测试它,但从布局中删除所有视图。 RemoveImg方法每个用户点击一次只删除一个图像。 – ArmsOP 2014-10-08 15:38:57

+0

我修复了它现在的工作。我把打破而(numberOfImages> 0){ removeImageAt(number_of_Image-1) numberOfImages = rel_with_images.getChildCount(); 休息; } 谢谢 – ArmsOP 2014-10-08 16:21:25