Android:HashMap仅显示Listview字段中的最后一个数组项

时间:2013-07-13 16:00:54

标签: java android listview hashmap

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

ListView

2 个答案:

答案 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;行。这对你有帮助。