0

ファイルから情報jsonを取得し、カスタムでデータを表示していますListView。今、私はArray名前付きを持っていauthorsます。著者が複数いる場合。しかし、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);
4

2 に答える 2

2
 temp.put(KEY_AUTHOR, authordName);

それがおそらく理由です。すべての作成者を反復処理していますが、HashMap値をオーバーライドし、最後の作成者のみが保存されています。

私が理解しているように、JSONObject の配列を含む JSON 応答が返されます。各 JSONObject には、いくつかの情報と、関連する作成者のサブ JSONArray が含まれています。

最も簡単なアプローチは、独自のアダプターを実装して構築ArrayList<JSONObject>および拡張することです。BaseAdapterそれは非常に簡単です。ViewHolder パターンでの大規模なデータ検索の場合、最適化のために。

于 2013-07-13T16:15:58.257 に答える