如何在按钮单击时动态删除ListView中的项目?

Var*_*oid 16 android listview

我正在开发一个需要从ListView按钮事件中删除项目的应用程序.

我试图将其删除ArrayList并创建整个新适配器并再次加载列表.由于我的列表很大,这样做会影响我的应用程序的性能.所以我想知道是否还有其他方法可以动态删除列表中的项目.

编辑:我试过你说的话.

当我删除一个项目时,它完美地工作,但随着我增加所选项目的数量,它开始给我IndexOutOfBoundException.

这是我的代码:

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{}
}
Run Code Online (Sandbox Code Playgroud)

这里notes是对SimpleAdapter对象的引用.

Oct*_*ean 50

那么你只需使用remove()你的方法从列表中删除所需的项目ArrayAdapter.

可能的方法是:

Object toRemove = arrayAdapter.getItem([POSITION]);
arrayAdapter.remove(toRemove);
Run Code Online (Sandbox Code Playgroud)

另一种方法是修改ArrayList和调用notifyDataSetChanged()ArrayAdapter.

arrayList.remove([INDEX]);
arrayAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

  • 你必须添加arrayAdapter.notifyDataSetChanged() (5认同)

Sur*_*jaj 5

这对我有用.希望它可以帮助某人.:)

SimpleAdapter adapter = (SimpleAdapter) getListAdapter();
this.resultsList.remove((int) info.id);
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)