title: Populate ExpandableListView using data from JSON response
body: <p>I am having a problem with the expandablelistview. All the tutorials I've seen regarding the parent item have only one item. In my case I'm doing with multiple fields (name and comment) in both parent and child. How should I proceed?</p>
  
  <p>my json data</p>
  
  <pre><code>[
  {
      nome: "Carlos",
      comentario: "Esse dia foi show",
      resp: [ ]
  },
  {
      nome: "Andre",
      comentario: "Acho que não precisava disso",
      resp: [
      {
          nome: "inutil",
          comentario: "Sempre assim"
      },
      {
          nome: "Roberto",
          comentario: "Se não estivessem fazendo nada errado, não iam querer apagar a mídia."
      },
      {
          nome: "xumbinho",
          comentario: "André ! Para vai!"
      }
      ]
  },
  {
      nome: "Celso",
      comentario: "É pra acabar mesmo",
      resp: [ ]
  }
  ]
  </code></pre>
  
  <p>And my ComentariosActivity code</p>
  
  <pre><code>private void makejsonobjreq() {
          PD.show();
  
          JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET, url+"284901",
                  null, response -&gt; {
                      ArrayList&lt;Group&gt; list = new ArrayList&lt;Group&gt;();
                      ArrayList&lt;Child&gt; ch_list;
  
                      Log.d("response", String.valueOf(response));
                      try {
                          Iterator&lt;String&gt; key = response.keys();
                          while (key.hasNext()) {
                              String k = key.next();
                              Log.d("KEY", String.valueOf(k));
  
                              Group gru = new Group();
                              gru.setNome(k);
                              ch_list = new ArrayList&lt;Child&gt;();
  
                              JSONArray ja = response.getJSONArray(k);
                              Log.d("QNT", String.valueOf(ja.length()));
  
                              for (int i = 0; i &lt; ja.length(); i++) {
  
                                  JSONObject jo = ja.getJSONObject(i);
  
                                  Child ch = new Child();
                                  Log.d("COMENTARIO NOME",jo.getString("nome"));
                                  ch.setNome(jo.getString("nome"));
                                  ch.setComentario(jo.getString("comentario"));
  
                                  ch_list.add(ch);
                              } // for loop end
                              gru.setItems(ch_list);
                              list.add(gru);
                          } // while loop end
  
                          ExpAdapter = new ExpandListAdapter(ComentariosActivity.this, list);
                          ExpandList.setAdapter(ExpAdapter);
  
                          PD.dismiss();
  
                      } catch (JSONException e) {
                          e.printStackTrace();
                      }
                  }, new Response.ErrorListener() {
              @Override
              public void onErrorResponse(VolleyError error) {
                  PD.dismiss();
                  Log.d("response", String.valueOf(error));
              }
          });
          MyApplication.getInstance().addToRequestQueue(jsonObjReq, "jreq");
      }
  </code></pre>
  
  <p>Adapter</p>
  
  <pre><code>package br.inf.cgn.cgnapp;
  
  import java.util.ArrayList;
  import android.content.Context;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.BaseExpandableListAdapter;
  import android.widget.TextView;
  import com.android.volley.toolbox.ImageLoader;
  
  import br.inf.cgn.cgnapp.model.Child;
  import br.inf.cgn.cgnapp.model.Group;
  
  public class ExpandListAdapter extends BaseExpandableListAdapter {
  
      private Context context;
      private ArrayList&lt;Group&gt; groups;
  
      ImageLoader imageLoader = MyApplication.getInstance().getImageLoader();
  
      public ExpandListAdapter(Context context, ArrayList&lt;Group&gt; groups) {
          this.context = context;
          this.groups = groups;
      }
  
      @Override
      public Object getChild(int groupPosition, int childPosition) {
          ArrayList&lt;Child&gt; chList = groups.get(groupPosition).getItems();
          return chList.get(childPosition);
      }
  
      @Override
      public long getChildId(int groupPosition, int childPosition) {
          return childPosition;
      }
  
      @Override
      public View getChildView(int groupPosition, int childPosition,
                               boolean isLastChild, View convertView, ViewGroup parent) {
  
          Child child = (Child) getChild(groupPosition, childPosition);
          if (convertView == null) {
              LayoutInflater infalInflater = (LayoutInflater) context
                      .getSystemService(context.LAYOUT_INFLATER_SERVICE);
              convertView = infalInflater.inflate(R.layout.comentarios_resp, null);
          }
  
          if (imageLoader == null)
              imageLoader = MyApplication.getInstance().getImageLoader();
  
          TextView nome = (TextView) convertView.findViewById(R.id.nome_resp);
          nome.setText(child.getNome().toString());
  
          TextView comentario = (TextView) convertView.findViewById(R.id.comentario_resp);
          comentario.setText(child.getComentario().toString());
  
          return convertView;
      }
  
      @Override
      public int getChildrenCount(int groupPosition) {
          ArrayList&lt;Child&gt; chList = groups.get(groupPosition).getItems();
          return chList.size();
      }
  
      @Override
      public Object getGroup(int groupPosition) {
          return groups.get(groupPosition);
      }
  
      @Override
      public int getGroupCount() {
          return groups.size();
      }
  
      @Override
      public long getGroupId(int groupPosition) {
          return groupPosition;
      }
  
      @Override
      public View getGroupView(int groupPosition, boolean isExpanded,
                               View convertView, ViewGroup parent) {
          Group group = (Group) getGroup(groupPosition);
          if (convertView == null) {
              LayoutInflater inf = (LayoutInflater) context
                      .getSystemService(context.LAYOUT_INFLATER_SERVICE);
              convertView = inf.inflate(R.layout.comentarios_list, null);
          }
          TextView nome = (TextView) convertView.findViewById(R.id.nome);
          nome.setText(group.getNome());
          TextView comentario = (TextView) convertView.findViewById(R.id.comentario);
          comentario.setText(group.getComentario());
  
          return convertView;
      }
  
      @Override
      public boolean hasStableIds() {
          return true;
      }
  
      @Override
      public boolean isChildSelectable(int groupPosition, int childPosition) {
          return true;
      }
  
  }
  </code></pre>
  
  <p>I tried several ways to make this code work but with no success!</p>