【发布时间】:2013-11-26 23:27:14
【问题描述】:
我有一个使用 CHOICE_MODE_MULTIPLE 的 ListView。
用户做出选择后,我需要从列表中删除所选项目。
我使用getCheckedItemPositions() 返回检查项目的 SparseBooleanArray。
我阅读的所有文档和相关问题都表明,要有效地从列表中删除项目,您应该使用 Iterator,但我不知道该怎么做。 p>
我通过按索引循环遍历 ListView 中的项目并使用项目列表的临时克隆来查找应删除的项目来实现相同的操作(请参见下面的代码)。但据说循环遍历这样的索引以从 List = Bad Coding Monkey 中删除项目。我被告知我应该使用迭代器来代替。但是怎么做呢?
protected void removeItems() {
SparseBooleanArray itemsSelectionState = mItemsListView.getCheckedItemPositions();
ArrayList<String> itemsClone = (ArrayList<String>) mItems.clone();
for (int i = 0; i < mItemsListView.getCount(); i++) {
if (itemsSelectionState.get(i) == true) {
mItems.remove(itemsClone.get(i));
}
}
mItemsListView.clearChoices();
mItemsListAdapter.notifyDataSetChanged();
}
【问题讨论】: