我有一个带有以下结构的JOSN文件
[
{
"category" : "Category - 1",
"table":[
{
"id" : 1,
"title" : "Sample Title 1"
},
{
"id" : 2,
"title" : "Sample Title 2"
},
{
"id" : 3,
"title" : "Sample Title 3"
}
]
},
{
"category": "Category - 2",
"table":[
{
"id" : 1,
"title" : "Sample Title 1"
},
{
"id" : 2,
"title" : "Sample Title 2"
},
{
"id" : 3,
"title" : "Sample Title 3"
}
]
}
]
首先,我将所有“类别”值加载到列表视图,例如“Category - 1”,“Category - 2”。 当我从listview中选择“Category-1”项时,我想只从“Category-1”表中加载/读取项目,当我从listview中选择“Category-2”项时,我想只加载/读取项目来自“Category - 2”表。
请告诉我如何阅读表格字段值。
答案 0 :(得分:3)
只需解析JSON并将其添加到ListView的适配器中。
JSONArray categories = new JSONArray(jsonString);
for (int i = 0; i < categories.length(); i++) {
JSONObject category = categories.getJSONObject(i);
String categoryName = category.getString("category");
JSONArray table = category.getJSONArray("table");
for (int k = 0; k < table.length(); k++) {
JSONObject object = table.getJSONObject(k);
int id = object.getInt("id");
String title = object.getString("title");
}
}
答案 1 :(得分:0)
试试这个,这样你就可以获得所有类别和他的子项目。
JSONArray arr = new JSONArray(json);
HashMap<String, List<SubItem>> map = new HashMap<String, List<SubItem>>();
for(int i=0; i<arr.length(); i++){
JSONObject obj = arr.getJSONObject(i);
String category = obj.getString("category");
JSONArray table = obj.getJSONArray("table");
List<SubItems> subITems = new ArrayList<SubItems>();
for(int j=0; j<table.length(); j++){
JSONObject item = table.getJSONObject(j);
SubItem sub = new SubItem();
sub.setId(item.getInt("id"));
sub.setTitle(item.getString("title"));
subITems.add(sub);
}
map.put(category, subITems);
}