Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to dynamically remove items from ListView on a button click?

I am working on an app that requires removing items from a ListView on a button event.

I tried to remove it from ArrayList and create the whole new adapter and load the list again. As my list is huge, doing this will affect the performance of my app. So I was wondering if there is any other way by which I could remove an item from my list dynamically.

Edit: I tried what you said.

When I removed one item it worked perfectly, but as I increase the number of selected items it starts giving me IndexOutOfBoundException.

Here's my code:

public void onClick(View view)
{
    SparseBooleanArray checkedPositions = new SparseBooleanArray();
    checkedPositions.clear();
    checkedPositions = lv.getCheckedItemPositions();
    int size = checkedPositions.size();
    if(size != 0)
    {

        for(int i = 0; i <= size; i++)
        {
            if(checkedPositions.valueAt(i))
            {
                list.remove(notes.getItem(checkedPositions.keyAt(i)));
                notes.notifyDataSetChanged();
            }
        }
    }
        else{}
}

Here, notes is a reference to an object of SimpleAdapter.

like image 589
Varundroid Avatar asked Mar 31 '11 09:03

Varundroid


1 Answers

Well you just remove the desired item from the list using the remove() method of your ArrayAdapter.

A possible way to do that would be:

Object toRemove = arrayAdapter.getItem([POSITION]);
arrayAdapter.remove(toRemove);

Another way would be to modify the ArrayList and call notifyDataSetChanged() on the ArrayAdapter.

arrayList.remove([INDEX]);
arrayAdapter.notifyDataSetChanged();
like image 92
Octavian A. Damiean Avatar answered Oct 05 '22 19:10

Octavian A. Damiean