在下面的代码中,我正在尝试向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);
}
}