Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:JSONArray进入可扩展列表问题_Android_Arrays_Json_Expandablelistview - Fatal编程技术网

Android: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

我想用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