我正在用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。任何帮助,将不胜感激。