我有一个listview,我从中删除了所选项目,我是通过SparseBooleanArray完成的。
但是,当我删除所选项目时,我还希望从其他两个arraylists( trackedItems,dateWatchList )中删除该位置,但是在 dateWatchList < / strong> arraylist总是1项不已删除。
我已经检查了几个线程,但我无法做到这一点。
如果有人可以提供帮助,那就太棒了。
代码:
...
SparseBooleanArray checkedItems = lv.getCheckedItemPositions();
for (int i = 0; i < adapter.getCount(); i++) {
if (checkedItems.get(i)) {
// This item is checked and can be removed
trackedItems.remove(i);
dateWatchList.remove(i); // 1 item always remains and is NOT removed?
adapter.remove(adapter.getItem(i));
}
}
checkedItems.clear();
adapter.notifyDataSetChanged();
...
答案 0 :(得分:0)
我自己解决了,对于遇到同样问题的人,这是我的工作代码:
SparseBooleanArray checkedItems = lv.getCheckedItemPositions();
for (int i = checkedItems.size()-1; i >= 0; i--) {
String selecteditem = adapter.getItem(checkedItems.keyAt(i));
String currentName = trackedItems.get(checkedItems.keyAt(i));
long currentDate = dateWatchList.get(checkedItems.keyAt(i));
if (checkedItems.get(checkedItems.keyAt(i))) {
adapter.remove(selecteditem);
trackedItems.remove(currentName);
dateWatchList.remove(currentDate);
}
}
checkedItems.clear();
adapter.notifyDataSetChanged();