我想从列表视图中删除一个项目

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);

【讨论】:

以上是关于我想从列表视图中删除一个项目的主要内容,如果未能解决你的问题,请参考以下文章

如何取消选择选定的列表视图项目?

如何在 Flutter 中删除列表视图顶部的项目?

在列表视图中制作视图不可见的android

从表视图中删除特定行

从视图及其所有相关表中删除记录

从 web 视图中的有序列表中删除缩进