I want to populate data in an expandableListView from a database. In fact, all I have to do is get all the data from one of my one table, since the first column will have group_name and the other four columns will be child, but here I am stuck ... Here is a piece of code that I am trying to use.
The public ViewDetail class extends the {
private ExpandableListView mExpandableListView; private List<GroupEntity> mGroupCollection; public void onCreate(Bundle savedInstanceState ){ super.onCreate(savedInstanceState); setContentView(R.layout.main); prepareResource(); initPage(); } private void prepareResource() { mGroupCollection = new ArrayList<GroupEntity>(); 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() <= 0){ Toast.makeText(ViewDetail.this, "empty...Please add.", Toast.LENGTH_LONG).show(); }else{ for(int i=0;i<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;
}
Public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context mContext; private ExpandableListView mExpandableListView; private List<GroupEntity> mGroupCollection; private int[] groupStatus; public ExpandableListAdapter(Context pContext,ExpandableListView pExpandableListView,List<GroupEntity> 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; }
}
public class GroupEntity {
public String Name; public List<GroupItemEntity> GroupItemCollection; public GroupEntity() { GroupItemCollection = new ArrayList<GroupItemEntity>(); } public class GroupItemEntity { public String Name; }
}