我想从列表视图中删除一个项目
Posted
技术标签:
【中文标题】我想从列表视图中删除一个项目【英文标题】:I want to delete an item from a list view 【发布时间】:2017-03-15 09:38:57 【问题描述】:我遇到的问题是,每当我 delete 时,只会删除 ListView
中的最后一项。我从我的数组列表中删除该项目并调用adapter.notifyDataSetChanged()
。有什么我想念的吗?此外,当我尝试删除太多项目时,我得到一个arrayIndexOutOfBounds
异常,但我传递了我收到的索引。为什么我会收到此异常?
public boolean onMenuItemClick(int position, SwipeMenu menu, int index)
HistoryItem item = historyItems.get(index);
switch (index)
case 0:
//ToDo edit
//Toast.makeText(History.this,"pos "+position+" index "+index,Toast.LENGTH_SHORT).show();
break;
case 1:
//ToDo delete
historyItems.remove(item);
adapter.notifyDataSetChanged();
【问题讨论】:
尝试按索引删除项目,例如historyItems.remove(position);
检查索引是否正确
我在案例 0 中评论的吐司给我的索引为 0,第一项的位置为 1...所以我认为我不应该使用该位置删除...跨度>
@sharanggupta 请检查他们的demo 索引用于识别单击了哪个视图以及单击了哪一行的位置。
谢谢@Kaushik!!!!我不敢相信我犯了这个错误!!!我被名称索引误导了......
【参考方案1】:
不要使用index
使用position
public boolean onMenuItemClick(int position, SwipeMenu menu, int index)
HistoryItem item = historyItems.get(position);
switch (index)
case 0:
//ToDo edit
//Toast.makeText(History.this,"pos "+position+" index "+index,Toast.LENGTH_SHORT).show();
break;
case 1:
//ToDo delete
historyItems.remove(position);
adapter.notifyDataSetChanged();
【讨论】:
【参考方案2】:您正在使用索引,它是编辑或删除按钮的位置..
您必须使用 Position 而不是 index 从列表中删除项目
问题出在HistoryItem item = historyItems.get(index);
解决方案:
HistoryItem item = historyItems.get(position);
【讨论】:
谢谢你清理它!!!对不起,我不能投票,我的声誉太低了...... 没有问题 m8 。祝你好运【参考方案3】:您正在使用索引变量来删除项目。您需要使用位置变量从历史列表中获取所选项目
在代码中更改这一行
HistoryItem item = historyItems.get(position);
【讨论】:
以上是关于我想从列表视图中删除一个项目的主要内容,如果未能解决你的问题,请参考以下文章