gpt4 book ai didi

java - 安卓 : HashMap is showing only last array item in a Listview field

转载 作者:行者123 更新时间:2023-12-02 06:54:02 25 4
gpt4 key购买 nike

我正在从 json 文件中获取信息,并在自定义 ListView 中显示数据。现在,我有一个名为 authorsArray。作者有多位的地方。但是,在 ListView 中我只能看到最后一个作者姓名或最后一个数组项。如何显示所有项目?这是我的代码

            for (int index = 0; index < jsonArray.length(); index++) 
{
HashMap<String, String> 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);

最佳答案

 temp.put(KEY_AUTHOR, authordName);

这可能就是原因。您正在迭代除 HashMap 之外的所有作者将覆盖值并且仅保存最后一个值。

据我了解,您将收到带有 JSONObject 数组的 JSON 响应。每个 JSONObject 保存一些信息和相关作者的子 JSONArray。

最简单的方法可能只是构建 ArrayList<JSONObject>并延伸BaseAdapter实现您自己的适配器。这很容易。对于大集合数据搜索ViewHolder模式,进行优化。

关于java - 安卓 : HashMap is showing only last array item in a Listview field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com