遍历对象的ArrayList并在满足条件的情况下删除对象

时间:2019-11-29 17:36:13

标签: java android loops arraylist

我正在用Java开发一个Android应用程序,作为其一部分,我需要能够在取消选中复选框时成功地从ArrayList中删除一个对象。我创建了一个CheckboxDTO类来表示复选框的ID和值,所涉及的列表是一个名为filtersSelected的列表。这是我在选择复选框视图时要处理的方法:

public void onFilterSelected(View view) {
        // Is the checkbox selected?
        boolean isChecked = ((CheckBox) view).isChecked();

        // Validate the checkbox is selected
        if (isChecked)
        {
            // Add the string value of the checkbox to the filter list
            filters.add(String.valueOf(((CheckBox) view).getText()));
            // Update the list
            updateDynamicFilterList(filters);
            // Create a CheckboxDTO with the ID and value of the view
            CheckboxDTO checkboxDTO = new CheckboxDTO();
            // Assign CheckboxDTO's attributes to same values as view
            checkboxDTO.setId(view.getId());
            checkboxDTO.setValue(String.valueOf(((CheckBox) view).getText()));
            // Add new CheckboxDTO to List of selected filters
            filtersSelected.add(checkboxDTO);
        }
        else
        {
            // Remove the string value of the checkbox from the filter list
            filters.remove(String.valueOf(((CheckBox) view).getText()));
            // Update the list
            updateDynamicFilterList(filters);
            // Set an iterator variable to the size of the filtersSelected List
            int checkboxArraySize = filtersSelected.size();
            // Iterate through list of selected CheckboxDTO's and remove if the Id is the Id of view
            for (int i = 0; i < checkboxArraySize; i++)
            {
                // Validate the filter selected is the same Id as the view
                if (filtersSelected.get(i).getId() == view.getId())
                {
                    // If so, remove CHeckboxDTO from filtersSelected at the iterated index
                    filtersSelected.remove(i);
                }
            }

        }
    }

“过滤器”是另一个专门用于更新TextView的ArrayList,它将向用户显示选定的复选框。

我的想法是遍历列表,并删除具有与传递给该方法的视图匹配的ID的CheckboxDTO,但是我认为在删除CheckboxDTO之后,它会导致错误,因为该索引不再存在于列表和它仍在遍历列表。我需要知道一种可用于从filterSelected列表中安全删除CheckboxDTO的方法,该列表具有与传递给该方法的视图匹配的ID。任何帮助,将不胜感激。

0 个答案:

没有答案