2015-07-13 53 views
-1

我想重复使用这个我的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")); 

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

+0

嗯,你打电话'setText' ......正如其名字所示,它设置文本。如果你再次打电话会发生什么?对,它将内容设置为不同的文本,并“删除”前一个。而且由于没有替代最后一个的文本,所以这是唯一的文本。 – Tom

回答

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

  2. HashMap<String,Object> getDjname = new HashMap<String,Object>(); 并把独特的价值关键和整个模型作为

检查下面的代码片段:

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); 
} 
+0

啊,我明白了!谢谢我要试试这个。 –

+0

如果这个答案可以帮助你解决这个问题,请“接受它”作为回答:) – Prachi

0

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

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