Encontrado IndexOutOfBoundException ao remover itens do ListView no Android?

Eu tenho um simple_list_item_multiple_choice listview no meu layout e estou tentando remover todos os itens selecionados. Eu sei como excluí-lo, mas estou tendo dois grandes problemas ao excluir os itens: -

Meu programa não está excluindo mais de 2 itens, como se eu selecionasse 4 itens, apenas 2 serão excluídos e, às vezes, até os itens errado

Quando depuro meu código, encontrei o Array IndexOutOfBoundException no meu código e, tanto quanto sei, não há nenhuma exceção como esta no meu código e tudo isso por causa da exclusão de itens errados ou meno

aqui é o meu código: -

public void onClick(View view)
{
    SparseBooleanArray checkedPositions = new SparseBooleanArray();
    checkedPositions.clear();
    checkedPositions = lv.getCheckedItemPositions();
    int size = checkedPositions.size();
    if(size != 0)
    {
        try
        {
        for(int i = 0; i < size; i++)
        {
            if(checkedPositions.valueAt(i))
            {
                list.remove(checkedPositions.keyAt(i));
                notes.notifyDataSetChanged();
                lv.setItemChecked(i,false);
            }
        }}catch (IndexOutOfBoundsException ie)
        {}
    }
        else{}
}

Captei a exceção apenas para fins de depuração. Agradecemos antecipadamente, mas por favor ajude, porque estou preso nesta parte desde os últimos dois dias.

questionAnswers(3)

yourAnswerToTheQuestion