简体   繁体   English

Simpleadapter(带有子项的JSON)

[英]Simpleadapter (JSON with sub items)

I'm new to Android development, and I'm trying for several days to make my app work but with no success. 我是Android开发的新手,我想尝试几天使我的应用程序正常运行,但没有成功。 I'm using AsyncTask and SimpleAdapter , it returns the data however my JSON has sub items. 我正在使用AsyncTaskSimpleAdapter ,它返回数据,但是我的JSON有子项。 It's a JSON of comments where sometimes in a comment has the answers of that comment. 这是评论的JSON ,其中有时评论中包含该评论的答案。 But I have no idea if I do a listView inside a listView . 但是我不知道是否在listView内执行listView I'm really lost, I searched a lot and I did not find anything about my problem. 我真的迷路了,我搜寻了很多东西,但没有发现关于我的问题的任何信息。

Follow the JSON : 遵循JSON

{
COMENTARIOS: [
{
    comentarios_id: "1053939",
    noticias_id: "284901",
    duelos_id: "0",
    respostas_id: "0",
    videos_id: "0",
    nome: "ludi",
    email: "email@email.com.br",
    ip: "186.212.2.226",
    comentario: "COMENTÁRIO",
    data_cadastro: "2018-04-03 09:34:00",
    status: "3",
    gostei: "67",
    naogostei: "143",
    resp: [ ]
},
{
    comentarios_id: "1053943",
    noticias_id: "284901",
    duelos_id: "0",
    respostas_id: "0",
    videos_id: "0",
    nome: "Andre",
    email: "email@email.com.br",
    ip: "187.120.224.30",
    comentario: "COMENTÁRIO",
    data_cadastro: "2018-04-03 09:45:01",
    status: "3",
    gostei: "236",
    naogostei: "114",
    resp: [
    {
        comentarios_id: "1053945",
        noticias_id: "284901",
        duelos_id: "0",
        respostas_id: "1053943",
        videos_id: "0",
        nome: "Usuário",
        email: "email@email.com.br",
        ip: "187.39.180.166",
        comentario: "COMENTÁRIO",
        data_cadastro: "2018-04-03 09:51:54",
        status: "3",
        gostei: "143",
        naogostei: "219",
        resp: [ ]
    },
    {
        comentarios_id: "1053987",
        noticias_id: "284901",
        duelos_id: "0",
        respostas_id: "1053943",
        videos_id: "0",
        nome: "Roberto, o Legítimo",
        email: "email@email.com.br",
        ip: "177.6.152.156",
        comentario: "COMENTÁRIO",
        data_cadastro: "2018-04-03 11:39:52",
        status: "3",
        gostei: "82",
        naogostei: "124",
        resp: [ ]
    },
    {
        comentarios_id: "1054030",
        noticias_id: "284901",
        duelos_id: "0",
        respostas_id: "1053943",
        videos_id: "0",
        nome: "xumbinho",
        email: "email@email.com.br",
        ip: "186.232.178.237",
        comentario: "COMENTÁRIO",
        data_cadastro: "2018-04-03 13:19:51",
        status: "3",
        gostei: "69",
        naogostei: "116",
        resp: [ ]
    }
    ]
},
{
    comentarios_id: "1053964",
    noticias_id: "284901",
    duelos_id: "0",
    respostas_id: "0",
    videos_id: "0",
    nome: "Celso",
    email: "email@email.com.br",
    ip: "177.97.174.169",
    comentario: "COMENTÁRIO",
    data_cadastro: "2018-04-03 10:38:06",
    status: "3",
    gostei: "41",
    naogostei: "116",
    resp: [ ]
},
{
    comentarios_id: "1054061",
    noticias_id: "284901",
    duelos_id: "0",
    respostas_id: "0",
    videos_id: "0",
    nome: "Usuário",
    email: "email@email.com.br",
    ip: "181.223.181.27",
    comentario: "COMENTÁRIO",
    data_cadastro: "2018-04-03 14:23:10",
    status: "3",
    gostei: "60",
    naogostei: "15",
    resp: [
    {
        comentarios_id: "1054173",
        noticias_id: "284901",
        duelos_id: "0",
        respostas_id: "1054061",
        videos_id: "0",
        nome: "bob",
        email: "email@email.com.br",
        ip: "92.59.121.38",
        comentario: "COMENTÁRIO",
        data_cadastro: "2018-04-03 17:19:32",
        status: "3",
        gostei: "5",
        naogostei: "106",
        resp: [ ]
    },
    {
        comentarios_id: "1054485",
        noticias_id: "284901",
        duelos_id: "0",
        respostas_id: "1054061",
        videos_id: "0",
        nome: "Usuário",
        email: "email@email.com.br",
        ip: "187.55.120.227",
        comentario: "COMENTÁRIO",
        data_cadastro: "2018-04-04 10:24:56",
        status: "3",
        gostei: "0",
        naogostei: "0",
        resp: [ ]
    }
    ]
},
{
    comentarios_id: "1054304",
    noticias_id: "284901",
    duelos_id: "0",
    respostas_id: "0",
    videos_id: "0",
    nome: "Jorge",
    email: "email@email.com.br",
    ip: "189.74.113.127",
    comentario: "COMENTÁRIO",
    data_cadastro: "2018-04-03 21:00:03",
    status: "3",
    gostei: "1",
    naogostei: "0",
    resp: [ ]
},
{
    comentarios_id: "1054382",
    noticias_id: "284901",
    duelos_id: "0",
    respostas_id: "0",
    videos_id: "0",
    nome: "Pé na cova",
    email: "email@email.com",
    ip: "168.194.160.137",
    comentario: "COMENTÁRIO",
    data_cadastro: "2018-04-03 23:45:29",
    status: "3",
    gostei: "1",
    naogostei: "0",
    resp: [ ]
}
]
}

In AsyncTask inside the protected Void doInBackground(Void... arg0) I make the JSON call this way: protected Void doInBackground(Void... arg0)内的AsyncTask中,我通过以下方式进行JSON调用:

    JSONArray comentarios = jsonObj.getJSONArray("COMENTARIOS");
    for (int i = 0; i < comentarios.length(); i++) {
      JSONObject c = comentarios.getJSONObject(i);
      String nome = c.getString("nome");
      String comentario = c.getString("comentario");

      HashMap<String, String> comentariotxt = new HashMap<>();

      comentariotxt.put("nome", nome);
      comentariotxt.put("comentario", comentario);

      JSONArray resp = c.getJSONArray("resp");
      if(resp.length() > 0){
          for (int j = 0; j < resp.length(); j++){
              JSONObject d = resp.getJSONObject(j);
              String respostaNome = d.getString("nome");
              String respostaComentario = d.getString("comentario");
              Log.d("respostaNome",respostaNome);

              HashMap<String, String> respostatxt = new HashMap<>();
              respostatxt.put("respostaNome", respostaNome);
              respostatxt.put("respostaComentario", respostaComentario);
              comentarioList.add(respostatxt);
          }
      }
      comentarioList.add(comentariotxt);
  }

But here it already messes everything up. 但是这里已经把一切搞砸了。 Well, I need two things. 好吧,我需要两件事。 Let them bring the comment and the answers in order and the appearance of the balloon responses will be different from the comment balloon. 让他们按顺序输入评论和答案,气球响应的外观将与评论气球不同。 At the moment I'm only doing a listview of the comments, but I'm also not sure if I need another listview for the answers. 目前,我仅对评论进行列表查看,但是我不确定是否需要其他列表查看答案。 I mean ... I'm very lost! 我的意思是……我很迷路! Someone help me? 谁来帮帮我?

Thank you so much guys! 十分感谢大家!

I tried to modify your json with single object. 我试图用单个对象修改您的json

Please check the below code to parse this json : 请检查以下代码以解析此json

  try {
        JSONObject jsonObject1 = new JSONObject("{\n" +
                "\t\"COMENTARIOS\": [{\n" +
                "\t\t\"comentarios_id\": \"1053939\",\n" +
                "\t\t\"noticias_id\": \"284901\",\n" +
                "\t\t\"duelos_id\": \"0\",\n" +
                "\t\t\"respostas_id\": \"0\",\n" +
                "\t\t\"videos_id\": \"0\",\n" +
                "\t\t\"nome\": \"ludi\",\n" +
                "\t\t\"email\": \"email@email.com.br\",\n" +
                "\t\t\"ip\": \"186.212.2.226\",\n" +
                "\t\t\"comentario\": \"COMENTÁRIO\",\n" +
                "\t\t\"data_cadastro\": \"2018-04-03 09:34:00\",\n" +
                "\t\t\"status\": \"3\",\n" +
                "\t\t\"gostei\": \"67\",\n" +
                "\t\t\"naogostei\": \"143\",\n" +
                "\t\t\"resp\": []\n" +
                "\t}]\n" +
                "}");
        JSONArray jsonArray = jsonObject1.getJSONArray("COMENTARIOS");
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String comentarios_id = jsonObject.get("noticias_id").toString();
            System.out.println("----comentarios_id---" + comentarios_id);
        }

    } catch (JSONException e) {
        e.printStackTrace();
        System.out.println("----comentarios_id---exc--" + e);
    }

Note: In json object where i am passing static json, you need to pass your own string where all the json is stored. Note:在我要传递静态json的json对象中,您需要传递自己的字符串,该字符串用于存储所有json。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM