HashMap:仅获取最后插入的项目

时间:2015-07-13 09:06:27

标签: java android json hashmap

我正在尝试使用以下方法迭代我的hashmap:

public HashMap<String,String> getDj(){

    try {
        HashMap<String,String> getDjname = new HashMap<String,String>();
        JSONArray dj_listArray = mJsonObject.getJSONArray("dj_list");
        for (int i = 0; i < dj_listArray.length(); i++) {
            JSONObject getDjsched = dj_listArray.getJSONObject(i);
            getDjname.put("host_name", getDjsched.getString("host_name"));
            getDjname.put("host_image_url", getDjsched.getString("host_image_url"));
            getDjname.put("host_info_url", getDjsched.getString("host_info_url"));

       }
        Log.e("djlist",""+getDjname);

        return getDjname;


    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;

}

然后我试图使用recyclerview来获取这个:

holder.mDj.setText(schedDetailPosition.get(position).getDj().get("host_name"));

但问题是,它不会迭代。它只获得最后一项,只显示一项。

2 个答案:

答案 0 :(得分:2)

  1. 创建自定义类/模型来保存数据。

  2. HashMap<String,Object> getDjname = new HashMap<String,Object>(); 并将唯一值作为和整个模型作为

  3. 检查以下代码段:

    JSONArray dj_listArray = mJsonObject.getJSONArray("dj_list");
    for (int i = 0; i < dj_listArray.length(); i++) {
        CustomModel model = new CustomModel();
        JSONObject getDjsched = dj_listArray.getJSONObject(i);
        model.host_name = getDjsched.getString("host_name");
        model.host_image_url =getDjsched.getString("host_image_url");
        model.host_info_url= getDjsched.getString("host_info_url"));
        getDjname.put(i, model);
    }
    

答案 1 :(得分:0)

Hashmap只能对一个键只保存一个值。每次进行迭代时,都会使用该键的新值替换先前的值。

您可以考虑使用Hashmap列表。如果您需要多个值。