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

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

编辑:我尝试了您所说的内容。

当我删除一个项目时,它工作得很好,但是当我增加所选项目的数量时,它开始给我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{}
}

在这里,notes是对SimpleAdapter对象的引用。

最佳答案

好吧,您只需使用remove()ArrayAdapter方法从列表中删除所需的项目。

一种可能的方法是:

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

另一种方法是修改ArrayList并在notifyDataSetChanged()上调用ArrayAdapter
arrayList.remove([INDEX]);
arrayAdapter.notifyDataSetChanged();

关于android - 如何在单击按钮时从ListView动态删除项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5497580/

10-12 00:19
查看更多