通过Checkbox </string>在ArrayList <string>中添加/删除字符串

时间:2014-10-29 18:44:52

标签: java android string checkbox arraylist

每次选中或取消选中复选框时,我都会遇到添加/删除已添加到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);

1 个答案:

答案 0 :(得分:2)

每次添加另一个复选框时,它仍然会检查是否选中了上一个复选框。如果它是将另一个对象相同的String添加到arraylist。您需要检查arraylist是否已包含字符串,如果确实如此,则不添加。我建议使用Set而不是arraylist。这将不允许arraylist将重复。