Android ArrayList未正确删除

Android ArrayList未正确删除,android,arraylist,Android,Arraylist,我有一个屏幕,用户在其中选择他/她想要删除的项目,然后我将他/她的选择存储到一个整数数组列表中(基于他们在listView上单击的位置) 然后,我将他们想要删除的项目传递给一个函数,在这个函数中,我实际上从包含所有信息的哈希表中删除了这些项目。但出于某种原因,它并不是从哈希表中删除。我已经测试并查看了所有用于访问数据的变量,它们都是正确的。我不知道为什么它不删除我告诉它的内容 以下是函数: for (Entry<Integer, ArrayList<Deck>> i :

我有一个屏幕,用户在其中选择他/她想要删除的项目,然后我将他/她的选择存储到一个整数数组列表中(基于他们在listView上单击的位置)

然后,我将他们想要删除的项目传递给一个函数,在这个函数中,我实际上从包含所有信息的哈希表中删除了这些项目。但出于某种原因,它并不是从哈希表中删除。我已经测试并查看了所有用于访问数据的变量,它们都是正确的。我不知道为什么它不删除我告诉它的内容

以下是函数:

for (Entry<Integer, ArrayList<Deck>> i : listOfDecks.entrySet()) {
                    for (int p = 0; p < i.getValue().size(); p++) {
                        if (i.getValue().get(p).getTitle().equals(deckTitle)) {
                            for (int z = 0; z < deletedItems.size(); z++) {
                                listOfDecks.get(i.getKey()).get(p).getDeck().remove(deletedItems.get(z));

                            }
                        }
                    }
                }
for(条目i:listOfDecks.entrySet()){
对于(int p=0;p

deletedItems是一个arrayList,它保存用户选择的作为要删除的项目的内容

我看到的是您正在调用Deck.remove(int),因此您不是从哈希表中删除,而是从Deck中删除


此方法删除类组的(int)有什么作用?

您应该使用
Log.i(String tag,String messageText)
添加一些日志记录,以查看它实际在做什么,例如
deckTitle
的值等等。。。与遍历每一组内容不同的是,删除的项目列表应该准确地包含选项所在的位置,因此您只需遍历即可。要确定您给我们的代码有什么问题,会有点困难,但是我建议您检查
equals
hashCode
是否按照您试图删除的密钥的预期工作。(也就是说,如果您还没有重新定义它们,请确保
deletedItems.get(z)
的返回实际上是映射中的一个键。)抱歉,我刚刚算出了。不久前有人发布了一个解决方案,然后删除了它,但它给了我一个好主意。well Deck是一个arrayList。remove是标准的android arrayList remove函数。它只是从arrayList中删除该位置。问题是每次我删除某个内容时,我都需要相应地调整我的arrayList并将其减1。然后,也许您应该首先删除要删除的项目,然后按对象而不是按位置删除它们。无论哪种方式,您都应该发布解决方案以供将来参考:)