2014-10-29 4 views
0

У меня возникла проблема с добавлением/удалением строк, которые были добавлены в ArrayList каждый раз, когда флажок установлен или снят.Добавление/удаление строк в ArrayList <String> по флажку

Проблема заключается в том, что строка дублируется, когда проверяется более 1 флажка. Поэтому, если бы я должен был проверить 1-й ящик, он добавит его в массив. Если я сниму первый блок, он удалит его из массива. Проблема возникает, когда я делаю второй флажок. Когда я нажимаю еще один флажок, он добавляет предыдущую строку флажков, а не 2 текущей строки.

Only the first checkbox checked 
10-29 14:46:10.051: E/PAGES(14154): [alertPage] 

2 checkboxes checked 
10-29 14:46:10.051: E/PAGES(14154): [alertPage, alertPage, automationPage] 

и эта модель продолжает за каждый дополнительный флажок

Любые идеи, почему это происходит?

сильный текст

if (mCheckBoxAlerts.isChecked()) { 
     mAlertsPermLayout.setVisibility(LinearLayout.VISIBLE); 
     pageArray.add("alertPage"); 
    } else { 

     mAlertsPermLayout.setVisibility(LinearLayout.GONE); 
     pageArray.remove("alertPage"); 
    } 
    if (mCheckBoxAutomation.isChecked()) { 
     mAutomationPermLayout.setVisibility(LinearLayout.VISIBLE); 
     pageArray.add("automationPage"); 
    } else { 
     mAutomationPermLayout.setVisibility(LinearLayout.GONE); 
     pageArray.remove("automationPage"); 
    } 

Вот как я уверен, преобразование в строку

 String pageString = pageArray.toString(); 
     Log.e("PAGES", pageString); 

ответ

2

Каждый раз, когда вы добавляете еще один флажок он по-прежнему проверки, чтобы увидеть, если предыдущий установлен флажок. Если это, то добавляет другой объект, такой же, как String, в arraylist. Вам нужно проверить, не содержит ли арраист строку, если это не так. Я бы рекомендовал использовать Set вместо arraylist. Это не позволит дублировать, где будет заниматься архаист.

+0

Мог бы попробовать использовать Hashmap для этого, так как он не позволит добавлять дубликаты, но затем вы можете просто проверить массив. – user2494817

+2

Да, Hashmap или Set, вероятно, лучше подходят для этого. Набор, вероятно, был бы идеальным для этого Hashmap, на самом деле это не было бы здорово, потому что вам нужно только сохранить пару String not key, value. – brso05

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