我在每次选中或取消选中复选框时添加/删除已添加到 ArrayList 的字符串时遇到问题。
问题似乎是当选中超过 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);
最佳答案
每次您添加另一个复选框时,它仍然会检查前一个复选框是否已选中。如果是,则将另一个相同字符串的对象添加到数组列表中。您需要检查数组列表是否已包含该字符串,如果包含则不要添加。我建议使用 Set 而不是 arraylist。这将不允许 arraylist 允许重复。
关于java - 通过复选框添加/删除 ArrayList<String> 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638267/