在android中使用jsonarray对象的expandablelistview

时间:2014-12-01 13:12:45

标签: android

我有一个像这样的json响应对象。

[
    {
        "name": "Forbes",
        "guid": "aa8ee769628871feea7081e8c9b9ac1a",
        "id": "1",
        "region": "U.S National Publications",
        "state": "US"
    },
    {
        "name": "The Oregonian",
        "guid": "f0511e35b43241c641921221efcc4ae8",
        "id": "2",
        "region": "U.S Local Publications",
        "state": "Oregon"
    },
    {
        "name": "Chicago Tribune",
        "guid": "fcbfc403c4131b3361bf2ebeee2a743d",
        "id": "3",
        "region": "U.S Local Publications",
        "state": "Illinois"
    },
    {
        "name": "Detroit Free Press",
        "guid": "dc2e708f3d2d09b0f082cb1550535b99",
        "id": "4",
        "region": "U.S Local Publications",
        "state": "Michigan"
    },
    {
        "name": "The Philadelphia Inquirer",
        "guid": "23df2f82e304a7bd2f2b0a8f68a983a4",
        "id": "5",
        "region": "U.S Local Publications",
        "state": "Pennsylvania"
    }
]

这里“region”是组,“name”是child。可以任何人帮忙如何在android代码中显示这个.for android.group中的expandable listview应该是一个下拉列表,应该是checktextview。

1 个答案:

答案 0 :(得分:0)

尝试将HashMap与String一起使用,将ArrayList HashMap用作值:

        String jsonResponse ="[{\"name\":\"Forbes\",\"guid\":\"aa8ee769628871feea7081e8c9b9ac1a\",\"id\":\"1\",\"region\":\"U.S National Publications\",\"state\":\"US\"},{\"name\":\"The Oregonian\",\"guid\":\"f0511e35b43241c641921221efcc4ae8\",\"id\":\"2\",\"region\":\"U.S Local Publications\",\"state\":\"Oregon\"},{\"name\":\"Chicago Tribune\",\"guid\":\"fcbfc403c4131b3361bf2ebeee2a743d\",\"id\":\"3\",\"region\":\"U.S Local Publications\",\"state\":\"Illinois\"},{\"name\":\"Detroit Free Press\",\"guid\":\"dc2e708f3d2d09b0f082cb1550535b99\",\"id\":\"4\",\"region\":\"U.S Local Publications\",\"state\":\"Michigan\"},{\"name\":\"The Philadelphia Inquirer\",\"guid\":\"23df2f82e304a7bd2f2b0a8f68a983a4\",\"id\":\"5\",\"region\":\"U.S Local Publications\",\"state\":\"Pennsylvania\"}]";

        HashMap<String,ArrayList<HashMap<String,String>>> regionsHashMap = new HashMap<String, ArrayList<HashMap<String, String>>>();
        try{
            JSONArray jsonArray = new JSONArray(jsonResponse);

            for(int i=0;i<jsonArray.length();i++){
                if(regionsHashMap.containsKey(jsonArray.getJSONObject(i).getString("region"))){
                    ArrayList<HashMap<String,String>> regionList = regionsHashMap.get(jsonArray.getJSONObject(i).getString("region"));
                    HashMap<String,String> regionMap = new HashMap<String, String>();
                    regionMap.put("name",jsonArray.getJSONObject(i).getString("name"));
                    regionMap.put("guid",jsonArray.getJSONObject(i).getString("guid"));
                    regionMap.put("id",jsonArray.getJSONObject(i).getString("id"));
                    regionMap.put("region",jsonArray.getJSONObject(i).getString("region"));
                    regionMap.put("state",jsonArray.getJSONObject(i).getString("state"));
                    regionList.add(regionMap);
                    regionsHashMap.put(jsonArray.getJSONObject(i).getString("region"),regionList);
                }else{
                    ArrayList<HashMap<String,String>> regionList = new ArrayList<HashMap<String, String>>();
                    HashMap<String,String> regionMap = new HashMap<String, String>();
                    regionMap.put("name",jsonArray.getJSONObject(i).getString("name"));
                    regionMap.put("guid",jsonArray.getJSONObject(i).getString("guid"));
                    regionMap.put("id",jsonArray.getJSONObject(i).getString("id"));
                    regionMap.put("region",jsonArray.getJSONObject(i).getString("region"));
                    regionMap.put("state",jsonArray.getJSONObject(i).getString("state"));
                    regionList.add(regionMap);
                    regionsHashMap.put(jsonArray.getJSONObject(i).getString("region"),regionList);
                }
            }
        }catch (JSONException e){
            e.printStackTrace();
        }

        Iterator it = regionsHashMap.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pairs = (Map.Entry)it.next();
            System.out.println("Region :: "+pairs.getKey());
            ArrayList<HashMap<String,String>> regionList = (ArrayList<HashMap<String,String>>) pairs.getValue();
            for(HashMap<String,String> region : regionList){
                System.out.println("name : "+region.get("name"));
                System.out.println("guid : "+region.get("guid"));
                System.out.println("id : "+region.get("id"));
                System.out.println("region : "+region.get("region"));
                System.out.println("state : "+region.get("state"));
            }
        }