我正在尝试使用以下方法迭代我的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 :(得分: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);
}
答案 1 :(得分:0)
Hashmap只能对一个键只保存一个值。每次进行迭代时,都会使用该键的新值替换先前的值。
您可以考虑使用Hashmap列表。如果您需要多个值。