我有一个像这样的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。
答案 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"));
}
}