添加arraylist后不允许更改hashmap值

时间:2014-07-09 10:36:37

标签: java php android arraylist hashmap

我有这个arraylist而另一个是hashmap

 ArrayList<HashMap<String, String>> agentList = new ArrayList<HashMap<String, String>>();
 HashMap<String, String> agentproperty = new HashMap<String, String>();

我从php文件收到了jArray。并尝试使用hashmap将其放入数组中。

 JSONArray jArray = jsonObj.getJSONArray(TAG_AGENT);
      String id = null;
      String name = null;

        for (int i = 0; i < jArray.length(); i++) {
            JSONObject a = jArray.getJSONObject(i);
            id = a.getString(TAG_AGENTID);
            name = a.getString(TAG_NAME);

            agentproperty.put("AGENTID", id);
            agentproperty.put("NAME", name);

            Log.d("id",id);
            Log.d("name",name);
            agentList.add(agentproperty);


    }
                Log.d("firstperson",String.valueOf(agentList.get(0)));
                Log.d("secondperson",String.valueOf(agentList.get(1)));

我可以

id 1, hame cathy; id 2, name john

用于日志内部循环。但是从上一个日志开始,我正在

id 2,姓名约翰; id 2,名字约翰 即使在添加了arraylist后,似乎更改了agentproperty的值。 我尝试了agentList.add(agentproperty);循环之外。没工作。仅插入最后一个值(id 2,名称john)。任何想法我如何使用循环中获得的所有值填充此数组。我需要在listview中使用agentList。

2 个答案:

答案 0 :(得分:1)

是的,是的。您必须在每次迭代时创建HashMap的新实例,否则您将覆盖给定键的值(如果条目已存在)

答案 1 :(得分:0)

移动

HashMap<String, String> agentproperty = new HashMap<String, String>();

for循环