java - 通过复选框添加/删除 ArrayList<String> 中的字符串

标签 java android string checkbox arraylist

我在每次选中或取消选中复选框时添加/删除已添加到 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/

相关文章:

java - JUnit 错误测试和日志记录

string - 如何将字符串列表作为隐藏输入从 jsf 页面传递到请求范围的支持 bean

python字符串操作。粘字分离

java - 如何强制所有 Java 类都具有属性

java - 如何将行和列添加到 JavaFX 8 TableView

java - 无法在控制台输出中打印 SQL 语句

c# - 使用 MonoDroid C# 显示状态栏通知

android - 是否可以在 android Activity 中调用 setContentView() 之前显示进度条对话框?

java - 是否可以将 ofFloat 设置为多个目标?

java - 为什么正则表达式与字符串不匹配?