我正在从json
文件中提取信息,并在自定义ListView
中显示数据。现在,我有一个名为Array
的{{1}}。作者是多重的。但是,在authors
中,我只能看到最后一个作者姓名或最后一个数组项。
如何显示所有项目?这是我的代码
ListView
答案 0 :(得分:2)
temp.put(KEY_AUTHOR, authordName);
这可能就是原因。您正在迭代所有作者,但HashMap
将覆盖值,并且只保存最后一个。
据我所知,您正在使用JSONObject数组返回JSON响应。每个JSONObject包含一些信息和关联作者的子JSONArray。
最简单的方法可能是构建ArrayList<JSONObject>
并扩展BaseAdapter
实现自己的适配器。这很容易。对于ViewHolder模式的大量数据搜索,进行优化。
答案 1 :(得分:0)
'HashMap<String, String> temp;
for (int index = 0; index < jsonArray.length(); index++)
{
temp = new HashMap<String,String>();
JSONObject jsonObject = jsonArray.getJSONObject(index);
String topic = jsonObject.getString("topic");
String type = jsonObject.getString("type");
String title = jsonObject.getString("title");
String absData = jsonObject.getString("abstract");
JSONArray getAuthorsArray = new JSONArray(jsonObject.getString("authors"));
for(int a =0 ; a < getAuthorsArray.length(); a++){
JSONObject getJSonObj = (JSONObject)getAuthorsArray.get(a);
String authordName = getJSonObj.getString("name");
Log.e("Name", authordName);
temp.put(KEY_AUTHOR, authordName);
}
temp.put(KEY_TOPIC, topic);
temp.put(KEY_TYPE, type);
temp.put(KEY_TITLE, title);
temp.put(KEY_ABSTRACT,absData);
list.add(temp);
}
}
simpleAdapter = new SimpleAdapter(this, list, R.layout.abstract_items, from, new int[]{R.id.abTopic,R.id.abType,R.id.abTitle,R.id.SubTitle});
setListAdapter(simpleAdapter);'
你在onstart上面声明&#34; HashMap&#34;行。这对你有帮助。