SparseBooleanArray和2个arraylists,项目未从arraylist中删除

时间:2017-01-27 15:09:39

标签: android listview arraylist

我有一个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();
...

1 个答案:

答案 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();