Encountered IndexOutOfBoundException al eliminar elementos de ListView en Android?

Tengo uno simple_list_item_multiple_choice listview en mi diseño y estoy tratando de eliminar todos los elementos seleccionados. Sé cómo eliminarlo, pero tengo dos problemas principales al eliminar los elementos: -

Mi programa no está eliminando más de 2 elementos, como si seleccioné 4 elementos, solo se eliminarán 2 y, en algún momento, incluso se eliminarán los elementos incorrectos.

Cuando depuro mi código, encontré Array IndexOutOfBoundException en mi código y, que yo sepa, no hay una excepción como esta en mi código y todo se debe a la eliminación de los elementos incorrectos o menos.

aquí está mi 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{}
}

Capté la excepción solo con fines de depuración. Gracias de antemano, pero por favor ayuda porque estoy atrapado en esta parte desde hace dos días.

Respuestas a la pregunta(3)

Su respuesta a la pregunta