Android ArrayList未正确删除
我有一个屏幕,用户在其中选择他/她想要删除的项目,然后我将他/她的选择存储到一个整数数组列表中(基于他们在listView上单击的位置) 然后,我将他们想要删除的项目传递给一个函数,在这个函数中,我实际上从包含所有信息的哈希表中删除了这些项目。但出于某种原因,它并不是从哈希表中删除。我已经测试并查看了所有用于访问数据的变量,它们都是正确的。我不知道为什么它不删除我告诉它的内容 以下是函数:Android ArrayList未正确删除,android,arraylist,Android,Arraylist,我有一个屏幕,用户在其中选择他/她想要删除的项目,然后我将他/她的选择存储到一个整数数组列表中(基于他们在listView上单击的位置) 然后,我将他们想要删除的项目传递给一个函数,在这个函数中,我实际上从包含所有信息的哈希表中删除了这些项目。但出于某种原因,它并不是从哈希表中删除。我已经测试并查看了所有用于访问数据的变量,它们都是正确的。我不知道为什么它不删除我告诉它的内容 以下是函数: for (Entry<Integer, ArrayList<Deck>> i :
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。然后,也许您应该首先删除要删除的项目,然后按对象而不是按位置删除它们。无论哪种方式,您都应该发布解决方案以供将来参考:)