title: populate data for expandableListView from database in Android
body: <p>I want to populate data in expandableListView from database. Actually all I need to do is to retrieve all data from a single my
    single table, as the first column will be groupName and rest four column will be child, but here i got stuck...
    Here is the piece of code that I am trying with.</p>
  
  <p>public class ViewDetail extends Activity{</p>
  
  <pre><code>private ExpandableListView mExpandableListView;
  private List&lt;GroupEntity&gt; mGroupCollection;
  
  public void onCreate(Bundle savedInstanceState ){
  
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
  
      prepareResource();
      initPage();
  }
  
  private void prepareResource() {
  
      mGroupCollection = new ArrayList&lt;GroupEntity&gt;();
      DBClass db = new DBClass(ViewDetail.this);
      SQLiteDatabase dc = db.getReadableDatabase();
      Cursor cur = dc.query(true, "db_table", new String[]{"title","_url","username","password","comment"}, null, null, null, null, null, null);
      ContentValues cv = null;
      String _title = "";
      String _url = "";
      String _usrname = "";
      String _pasword = "";
      String _comment = "";
  
      if(cur.getCount() &lt;= 0){
          Toast.makeText(ViewDetail.this, "empty...Please add.", Toast.LENGTH_LONG).show();
      }else{
  
          for(int i=0;i&lt;cur.getCount();i++){              
  
              _title = cur.getString(0);
              _url = cur.getString(1);
              _usrname = cur.getString(2);
              _pasword = cur.getString(3);
              _comment = cur.getString(4);
  
              GroupEntity ge = new GroupEntity();
              ge.Name = _title;
                  GroupItemEntity gi = ge.new GroupItemEntity();
                  gi.Name =  _url;//"Child" + j;
                  gi.Name =  _usrname;
                  gi.Name =  _pasword;
                  gi.Name =  _comment;
              mGroupCollection.add(ge);
              cur.moveToNext();   
  
          }
  
      }
  
      cur.close();
      db.close();
      dc.close(); 
      }
  
  }
  
  
  private void initPage() {
  
      mExpandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
      ExpandableListAdapter adapter = new ExpandableListAdapter(this,mExpandableListView, mGroupCollection);
      mExpandableListView.setAdapter(adapter);
  
  }
  </code></pre>
  
  <p>}</p>
  
  <p>public class ExpandableListAdapter extends BaseExpandableListAdapter{</p>
  
  <pre><code>private Context mContext;
  private ExpandableListView mExpandableListView;
  private List&lt;GroupEntity&gt; mGroupCollection;
  private int[] groupStatus;
  
  public ExpandableListAdapter(Context pContext,ExpandableListView pExpandableListView,List&lt;GroupEntity&gt; pGroupCollection) {
      mContext = pContext;
      mGroupCollection = pGroupCollection;
      mExpandableListView = pExpandableListView;
      groupStatus = new int[mGroupCollection.size()];
  
      setListEvent();
  }
  
  private void setListEvent() {
  
      mExpandableListView.setOnGroupExpandListener(new OnGroupExpandListener() {
  
                  @Override
                  public void onGroupExpand(int arg0) {
                      groupStatus[arg0] = 1;
                  }
              });
  
      mExpandableListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {
  
                  @Override
                  public void onGroupCollapse(int arg0) {
                      groupStatus[arg0] = 0;
                  }
              });
  }
  
  @Override
  public String getChild(int arg0, int arg1) {
      return mGroupCollection.get(arg0).GroupItemCollection.get(arg1).Name;
  }
  
  @Override
  public long getChildId(int arg0, int arg1) {
      return 0;
  }
  
  @Override
  public View getChildView(int arg0, int arg1, boolean arg2, View arg3,ViewGroup arg4) {
  
      ChildHolder childHolder;
      if (arg3 == null) {
  
          arg3 = LayoutInflater.from(mContext).inflate(R.layout.list_group_item, null);
          childHolder = new ChildHolder();
          childHolder.title = (TextView) arg3.findViewById(R.id.item_title);
          arg3.setTag(childHolder);
      }else {
          childHolder = (ChildHolder) arg3.getTag();
      }
  
      childHolder.title.setText(mGroupCollection.get(arg0).GroupItemCollection.get(arg1).Name);
      return arg3;
  }
  
  @Override
  public int getChildrenCount(int arg0) {
      return mGroupCollection.get(arg0).GroupItemCollection.size();
  }
  
  @Override
  public Object getGroup(int arg0) {
      return mGroupCollection.get(arg0);
  }
  
  @Override
  public int getGroupCount() {
      return mGroupCollection.size();
  }
  
  @Override
  public long getGroupId(int arg0) {
      return arg0;
  }
  
  @Override
  public View getGroupView(int arg0, boolean arg1, View arg2, ViewGroup arg3) {
      GroupHolder groupHolder;
      if (arg2 == null) {
  
          arg2 = LayoutInflater.from(mContext).inflate(R.layout.list_group,null);
          groupHolder = new GroupHolder();
          groupHolder.img = (ImageView) arg2.findViewById(R.id.tag_img);
          groupHolder.title = (TextView) arg2.findViewById(R.id.group_title);
          arg2.setTag(groupHolder);
  
      } else {
          groupHolder = (GroupHolder) arg2.getTag();
      }
      if (groupStatus[arg0] == 0) {
          groupHolder.img.setImageResource(R.drawable.group_down);
      } else {
          groupHolder.img.setImageResource(R.drawable.group_up);
      }
          groupHolder.title.setText(mGroupCollection.get(arg0).Name);
  
      return arg2;
  }
  
  class GroupHolder {
      ImageView img;
      TextView title;
  }
  
  class ChildHolder {
      TextView title;
  }
  
  @Override
  public boolean hasStableIds() {
      return true;
  }
  
  @Override
  public boolean isChildSelectable(int arg0, int arg1) {
      return true;
  }
  </code></pre>
  
  <p>}</p>
  
  <p>public class GroupEntity {</p>
  
  <pre><code>public String Name;
  public List&lt;GroupItemEntity&gt; GroupItemCollection;
  
  public GroupEntity()
  {
      GroupItemCollection = new ArrayList&lt;GroupItemEntity&gt;();
  }
  
  public class GroupItemEntity
  {
      public String Name;
  }
  </code></pre>
  
  <p>}</p>