当再次重新选择相同的项目时,列表视图中项目的属性会更改(或设置为新属性)

时间:2015-03-23 07:39:52

标签: java android listview android-activity arraylist

我有一个项目的ArrayList。我将具有某些属性的Item添加到数组列表中。当我使用不同的属性再次将相同的项添加到数组列表时,先前添加的项的所有属性都设置为新项的属性。 例如,如果我添加汽车与柴油和轿车等属性,我再添加一个汽车与属性汽油和两厢车。

我应该看到ArrayList这样的项目:

[0] Car(Diesel,Sedan)
[1] Car(Petrol,Hatchback)

但我看到这样:

[0] Car(Petrol,Hatchback)
[1] Car(Petrol,Hatchback)

1 个答案:

答案 0 :(得分:1)

我知道错误是什么。实际上我正在复制最初创建的对象的引用。当我创建一个新对象时,它使用相同的引用并用新的属性覆盖它的所有属性。即使我能在列表中看到两个项目,它们实际上也会引用相同的内存。

解决方案是复制属性而不是复制整个对象

而不是做Car1 = Car2; 我应该做Car1.type = Car2.type 这里有2个独立的记忆,包含2个独立的物体。