Encountered IndexOutOfBoundException while removing items from ListView in Android?

后端 未结 3 1328
囚心锁ツ
囚心锁ツ 2021-01-17 02:06

I have one simple_list_item_multiple_choice listview in my layout and i am trying to remove all the selected items from it. I know how to delete it but i am

相关标签:
3条回答
  • 2021-01-17 02:49

    From the look of it, you should change this

    for(int i = 0; i <= size; i++)
    

    to

    for(int i = 0; i < size; i++)
    
    0 讨论(0)
  • 2021-01-17 02:50
    for(int i = size-1 ; i >= 0; i--) 
    {
      if(checkedPositions.valueAt(i))
      {
        list.remove(checkedPositions.keyAt(i));
        //lv.setItemChecked(checkedPositions.keyAt(i),false);
      }
    }
    notes.notifyDataSetChanged();
    
    0 讨论(0)
  • 2021-01-17 03:01

    Each time you remove an item from the array at the lower lever, the total count is being reduced by 1. If you had 4 items to remove [ 0, 1, 2, 3], and you remove items starting with item 0, you have [0, 1, 2], then you remove item at 1, and you have [0, 1], if you try to remove item at index 2 which does not exist you will get an error. Try count down instead of up like this

    for(int i = size; i > 0; --i)
    {
      if(checkedPositions.valueAt(i))
      {
        list.remove(checkedPositions.keyAt(i));
        notes.notifyDataSetChanged();
        lv.setItemChecked(i,false);
      }
    }
    
    0 讨论(0)
提交回复
热议问题