gpt4 book ai didi

android - 从其 ItemClickListener 的 ListView 中删除项目

转载 作者:行者123 更新时间:2023-11-30 02:56:30 24 4
gpt4 key购买 nike

我正在使用 ArrayList 的集合来填充我的 Listview。我的 ListView 包含两个单独的行类型。

Header and Footer.

我正在尝试在我的 Listview 上实现 ExpandableListView 功能,我试图从中删除一些点击标题到下一个标题的项目。我正在使用此函数循环遍历项目并删除项目

private void removeItems(int value)
{ Log.e(Constant.LOG, items.size()+"");
for (int i = value;i < items.size(); i++) {
if(!items.get(i).isSection())
items.remove(i);
}
Log.e(Constant.LOG, items.size()+"");
adapter = new EntryAdapter(this, items, this);
mListView.setAdapter(adapter);
}

QUESTION IS : I am not able to remove all items from the list in one shot, some stays there !

我试过循环 adapter.count();但没有运气

我的 list :第 1 节第 1 项项目 2项目 N第 2 节但是当我点击第 1 部分时,并不是所有的项目都被一次删除为什么!在此阶段我无法使用可扩展 ListView ,因为 Activity 在列表上包含许多更复杂的功能。请帮助我哪里出错了!

最佳答案

创建一个新的 ArrayList<Collection> , 然后在其中添加您的项目,然后使用 removeAll(collection) .

试试这个:

  private void removeItems(int value)
{ Log.e(Constant.LOG, items.size()+"");
ArrayList<Collection> deleteItems= new ArrayList<Collection>();

for (int i = value;i < items.size(); i++) {
if(!items.get(i).isSection())
deleteItems.add(items.get(i));
}
items.removeAll(deleteItems);
Log.e(Constant.LOG, items.size()+"");
adapter = new EntryAdapter(this, items, this);
mListView.setAdapter(adapter);
}

编辑

每次删除项目时,都会更改 .

中元素的索引。

例如:假设您要删除列表1 ,然后 list[2] 变成 list 1 因此您的代码将跳过 list 1 下一次,因为现在您的计数器将移至 2。

您还可以通过其他方式实现这一目标, Removing item while iterating it

关于android - 从其 ItemClickListener 的 ListView 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23170697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com