2015-07-13 51 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列表。如果你需要多個值。