每次选中或取消选中复选框时,我都会遇到添加/删除已添加到ArrayList的字符串的问题。
问题似乎是,当选中多个复选框时,字符串会重复。所以,如果我要检查第一个框,它会将它添加到数组中。如果我取消选中第一个框,它将从阵列中删除它。当我执行第二个复选框时出现问题。当我按下另一个复选框时,它会显示添加前一个复选框字符串,而不是其当前字符串中的两个。
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);
答案 0 :(得分:2)
每次添加另一个复选框时,它仍然会检查是否选中了上一个复选框。如果它是将另一个对象相同的String添加到arraylist。您需要检查arraylist是否已包含字符串,如果确实如此,则不添加。我建议使用Set而不是arraylist。这将不允许arraylist将重复。