当前位置: 代码迷 >> Android >> Android中list.add有关问题
  详细解决方案

Android中list.add有关问题

热度:94   发布时间:2016-04-28 04:01:43.0
Android中list.add问题
下面的代码一直运行好好的,却突然出问题了。listAll.add本应该加进去每个map2,但是输出却变成加入了相同的map2。之前一直运行好好的,这是怎么回事啊?


listAll.clear();
for (int i = 0; i < str.length / 8; i++) {
System.out.println("i = " + i);
map2.put("user_name", list.get(i * 8));
map2.put("flag", list.get(i * 8 + 1));
map2.put("object_words", list.get(i * 8 + 2));
map2.put("my_words", list.get(i * 8 + 3));
map2.put("date", list.get(i * 8 + 5));

// 如果用户没有传照片,map2中传的imageUrl就为空
if (!list.get(i * 8 + 4).equals(" ")) {
String imageUrl1 = "http://10.0.2.2:8080/BBStuServlet/"
+ list.get(i * 8 + 4);
String imageUrl = imageUrl1.replace(" ", "");
map2.put("imageUrl", imageUrl);
} else {
map2.put("imageUrl", "");
}
System.out.println("map2 = " + map2);
listAll.add(map2);
System.out.println("listAll = " + listAll);


下面这张图片是输出,listAll里面的值全是一样的,之前还运行正常,请前辈指教,感激不尽。



------解决思路----------------------
你把map2的实例化放在for循环里面(也就是每次循环都new一个map2),应该没问题了
------解决思路----------------------
变量map2的值没有改变,所以你每次add的都是同一个对象,每次通过put修改的也是同一个对象。
应该在每个循环中new一个新对象

for (int i = 0; i < str.length / 8; i++) {
map2 = new HashMap<String, String>();
...
}
  相关解决方案