添加到 ArrayList 的 Android 会替换旧项目,我有相同的数据



在下面的代码中,我正在尝试向items添加一些数据,每次将数据添加到for子句中时,项目的子句值具有相同的数据,但在log cat中有不同的结果。

ArrayList<HashMap<String, String>> items = new ArrayList<>();
HashMap<String, String> item = new HashMap<>();
for (int p = 0; p < allFoodBean.size(); p++) {
if (allFoodBean.get(p).getItemId().equals("food1")) {
item.put("id", allFoodBean.get(p).getId());
item.put("name", allFoodBean.get(p).getName());
items.add(item);
}
}

问题是在以下代码行中向items添加数据:items.add(item);如何解决此问题?

试试这个

ArrayList<HashMap<String, String>> items = new ArrayList<>();
HashMap<String, String> item = null;
for (int p = 0; p < allFoodBean.size(); p++) {
if (allFoodBean.get(p).getItemId().equals("food1")) {
item = new HashMap<>();
item.put("id", allFoodBean.get(p).getId());
item.put("name", allFoodBean.get(p).getName());
items.add(item);
}
}

当条件变为假时,创建new HashMap<>()

在 for 循环内移动项目初始化。

在外部初始化它将继续在 for 循环中添加食物豆到同一个项目Map实例,最后您将在项目中有一个Map项目ArrayList而不是在ArrayList内有多个Map对象。

ArrayList<HashMap<String, String>> items = new ArrayList<>();
for (int p = 0; p < allFoodBean.size(); p++) {
if (allFoodBean.get(p).getItemId().equals("food1")) {
HashMap<String, String> item = new HashMap<>();
item.put("id", allFoodBean.get(p).getId());
item.put("name", allFoodBean.get(p).getName());
items.add(item);
}
}

最新更新