Android:JSONArray进入可扩展列表问题
我想用JSONArray制作一个可扩展的列表。 该应用程序工作正常,但并不完美。我想我在这方面有困难。 代码如下:Android:JSONArray进入可扩展列表问题,android,arrays,json,expandablelistview,Android,Arrays,Json,Expandablelistview,我想用JSONArray制作一个可扩展的列表。 该应用程序工作正常,但并不完美。我想我在这方面有困难。 代码如下: listDataHeader = new ArrayList<>(); listDataChild = new HashMap<>(); String json_string; try { json_string = json; jsonObject = new JSONObject(json_string); jsonArray
listDataHeader = new ArrayList<>();
listDataChild = new HashMap<>();
String json_string;
try {
json_string = json;
jsonObject = new JSONObject(json_string);
jsonArray = jsonObject.getJSONArray("server_response");
if (jsonArray.length() > 0) {
object = jsonArray.getJSONObject(0);
for (int i = 0; i < object.length(); i++) {
//Check with Log.e
Log.e(TAG, "Key = " + object.names().getString(i) + " value = " + object.get(object.names().getString(i)));
/*** Working with ExpandableList ***/
listDataHeader.add(object.names().getString(i));
List<String> list = new ArrayList<>();
list.add((object.get(object.names().getString(i))).toString());
listDataChild.put(listDataHeader.get(i), list);
}
listAdapter = new ExpandableListAdapter(getContext(), listDataHeader, listDataChild);
// setting list adapter
expListView.setAdapter(listAdapter);
} else {
System.out.println("Empty JSON");
}
} catch (JSONException e) {
e.printStackTrace();
}
所以,问题是当我想看到值时,只显示第一个对象,第二个不显示。
有什么想法吗?如果要在JsonObject上循环,必须在JsonArray上循环
if (jsonArray.length() > 0) {
for (int i = 0; i < jsonArray.length(); i++) {
object = jsonArray.getJSONObject(i);
Log.e(TAG, "Key = " + object.names().getString(i) + " value = " + object.get(object.names().getString(i)));
/*** Working with ExpandableList ***/
listDataHeader.add(object.names().getString(i));
List<String> list = new ArrayList<>();
list.add((object.get(object.names().getString(i))).toString());
listDataChild.put(listDataHeader.get(i), list);
}
:
:
}//if array >0
if(jsonArray.length()>0){
for(int i=0;i0
如果要在JsonObject上循环,必须在JsonArray上循环
if (jsonArray.length() > 0) {
for (int i = 0; i < jsonArray.length(); i++) {
object = jsonArray.getJSONObject(i);
Log.e(TAG, "Key = " + object.names().getString(i) + " value = " + object.get(object.names().getString(i)));
/*** Working with ExpandableList ***/
listDataHeader.add(object.names().getString(i));
List<String> list = new ArrayList<>();
list.add((object.get(object.names().getString(i))).toString());
listDataChild.put(listDataHeader.get(i), list);
}
:
:
}//if array >0
if(jsonArray.length()>0){
for(int i=0;i0
此响应中的标题和内容是什么!!?您在这个回复中的标题和内容是什么!!?它不起作用。现在只有这两个元素是可见的:Medii Vizuale De Programare:“10”,“Retele De Calculatoare:“5”“@LászlóCsiki很明显,您不了解JSON结构、JsonArray、JsonObject。这是正确的输出,因为您显示的json是一个由2个对象组成的数组,如果您想读取每个对象中的每个属性,这是另一个故事。是的,它是obvius,但我想理解它。你能帮我吗?@LászlóCsiki你必须通过它的名称对象来获取每个属性。get(“property_name”)
或者如果object.names()
返回某种数组或列表,那么你需要在第一个循环中另一个for loop
来迭代每个对象属性并获取它们谢谢!我会试试:)@Yazanit不起作用。现在只有这两个元素是可见的:Medii Vizuale De Programare:“10”,“Retele De Calculatoare:“5”“@LászlóCsiki很明显,您不了解JSON结构、JsonArray、JsonObject。这是正确的输出,因为您显示的json是一个由2个对象组成的数组,如果您想读取每个对象中的每个属性,这是另一个故事。是的,它是obvius,但我想理解它。你能帮我吗?@LászlóCsiki你必须通过它的名称对象来获取每个属性。get(“property_name”)
或者如果object.names()
返回某种数组或列表,那么你需要在第一个循环中另一个for loop
来迭代每个对象属性并获取它们谢谢!我会试试看:)@Yazan