2017-02-07 2 views
0

Я попытался несколько способов удалить значение из списка массивов после снятия флажка, но кажется, что мне все еще не удалось.Как удалить значение из ArrayList <String>, когда установлен еще один флажок

В приведенном ниже коде содержится инструкция switch, которая будет содержать наши случаи для каждого окна. В основном, когда пользователь выбирает одно из полей, он сохраняет значение в ArrayList<String>, а затем я сохраняю его значение по другому методу, используя messageTotalTip = selection.get(0);

Заранее благодарен!

/* Create a View for our Check Boxes */ 
public void selectTip(View view){ 

    /*Boolean object will check if our checkbox is checked or not*/ 
    boolean checked =((CheckBox) view).isChecked(); 

    switch (view.getId()){ 

     /*Case if 15% is clicked*/ 
     case R.id.cb15Percent: 
      if(checked){ 

       /*store our value into the ArrayList*/ 
       selection.add("15"); 

       /*To make sure we cant click any other box*/ 
       cb18Percent.setChecked(false); 
       cb20Percent.setChecked(false); 
       cbCustomTip.setChecked(false); 

       /*Try and make sure that our value is erased if unchecked */ 
       if(cb18Percent.isChecked() || cb20Percent.isChecked()||cbCustomTip.isChecked()) { 

        selection.remove("15"); 
       } 

      } else { 
       selection.remove("15"); 
      } 
      break; 

     /*Case if 18% is clicked*/ 
     case R.id.cb18Percent: 
      if(checked){ 
       /*store our value into the ArrayList*/ 
       selection.add("18"); 

       /*Make sure we cant click any other box*/ 
       cb15Percent.setChecked(false); 
       cb20Percent.setChecked(false); 
       cbCustomTip.setChecked(false); 


       /*Try and make sure that our value is erased if unchecked */ 
       if(cb15Percent.isChecked() || cb20Percent.isChecked()||cbCustomTip.isChecked()) { 

        selection.remove("18"); 
       } 


      } else { 
       selection.remove("18"); 
      } 
      break; 

     /*Case if 20% is clicked*/ 
     case R.id.cb20Percent: 
      if(checked) { 
       /*store our value into the ArrayList*/ 
       selection.add("20"); 

       /*Make sure we cant click any other box*/ 
       cb15Percent.setChecked(false); 
       cb18Percent.setChecked(false); 
       cbCustomTip.setChecked(false); 


       /*Try and make sure that our value is erased if unchecked */ 
       if(cb18Percent.isChecked() || cb15Percent.isChecked()||cbCustomTip.isChecked()) { 
        selection.remove("20"); 
       } 

      } else { 
       selection.remove("20"); 
      } 
       break; 

     /*Case if the custom box is checked*/ /************ Add dialogue box later once smaller bugs are fixed ************/ 
     case R.id.cbCustom: 
      if(checked){ 
       selection.add("100"); 

       /*Make sure we cant click any other box*/ 
       cb15Percent.setChecked(false); 
       cb18Percent.setChecked(false); 
       cb20Percent.setChecked(false); 

       /*Try and make sure that our value is erased if unchecked */ 
       if(cb18Percent.isChecked() || cb20Percent.isChecked()||cb15Percent.isChecked()) { 

        selection.remove("100"); 
       } 
      }else { 
       selection.remove("100"); 
      } 
    } 
} 
+0

1. Может ли только один из них когда-либо проверяться в любой момент? 2.Поверните хотя бы один из них? –

+0

Да, и да! Это простой калькулятор чаевых, и поскольку я хочу рассчитать наконечник, мне нужно иметь только одно значение, чтобы я мог рассчитать наконечник. – Robbie08

+0

Почему бы вам не использовать радиокнопки? – jonhid

ответ

0

UPDATE: Большое спасибо всем вам, ребята. Я понял, что я делаю неправильно. Я использовал другой подход, прежде чем написать это сообщение, которое заставило меня использовать ArrayList. Увидев некоторые из ваших ребята, я понял, что мне больше не нужен ArrayList.

FIX: Практически просто установите глобальную переменную, называемую messageTotalTip, и установите ее значение в зависимости от случая.

Спасибо всем!

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