public class MainActivity extends Activity implements OnChildClickListener { private List<Map<String, Object>> group; private List<List<Map<String, Object>>> children; private String[] groupFrom = { "group" }; private String[] childFrom = { "child" }; private int[] groupTo = { R.id.iv }; private int[] childTo = { R.id.tv }; private int[] groups = new int[] { R.drawable.i1, R.drawable.i2, R.drawable.i3 }; private String[][] child = new String[][] { { "G1 C1", "G1 C2" }, { "G2 C1", "G2 C2", "G2 C3" }, { "G3 C1" } }; private ExpandableListView elv; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); elv = (ExpandableListView) findViewById(R.id.elv); group = new ArrayList<Map<String, Object>>(); for (int i = 0; i < groups.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("group", groups[i]); group.add(map); } children = new ArrayList<List<Map<String, Object>>>(); for (int i = 0; i < groups.length; i++) { List<Map<String, Object>> lmap = new ArrayList<Map<String, Object>>(); for (int j = 0; j < child[i].length; j++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("child", child[i][j]); lmap.add(map); } children.add(lmap); } adapter = new MyAdapter(getApplicationContext(), group, R.layout.group, groupFrom, groupTo, children, R.layout.child, childFrom, childTo); elv.setAdapter(adapter); elv.setOnChildClickListener(this); } @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // TODO Auto-generated method stub finish(); return true; } }
public class MyAdapter extends BaseExpandableListAdapter { private List<List<Map<String, Object>>> children; private List<Map<String, Object>> group; private String[] childFrom, groupFrom; private int[] childTo, groupTo; private int clayout, glayout; private LayoutInflater inflater; public MyAdapter(Context context, List<Map<String, Object>> group, int glayout, String[] groupFrom, int[] groupTo, List<List<Map<String, Object>>> children, int clayout, String[] childFrom, int[] childTo) { inflater = LayoutInflater.from(context); this.group = group; this.glayout = glayout; this.groupFrom = groupFrom; this.groupTo = groupTo; this.children = children; this.clayout = clayout; this.childFrom = childFrom; this.childTo = childTo; } @Override public Object getChild(int groupPosition, int childPosition) { // TODO Auto-generated method stub return children.get(groupPosition).get(childPosition); } @Override public long getChildId(int groupPosition, int childPosition) { // TODO Auto-generated method stub return childPosition; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View cv; if (convertView == null) cv = newChildView(parent); else cv = convertView; bindChildView(cv, children.get(groupPosition).get(childPosition), childFrom, childTo); return cv; } private View newChildView(ViewGroup parent) { // TODO Auto-generated method stub return inflater.inflate(clayout, parent, false); } private void bindChildView(View cv, Map<String, Object> map, String[] childFrom, int[] childTo) { // TODO Auto-generated method stub TextView tv = (TextView) cv.findViewById(childTo[0]); tv.setText((String) map.get(childFrom[0])); } @Override public int getChildrenCount(int groupPosition) { // TODO Auto-generated method stub return children.get(groupPosition).size(); } @Override public Object getGroup(int groupPosition) { // TODO Auto-generated method stub return group.get(groupPosition); } @Override public int getGroupCount() { // TODO Auto-generated method stub return group.size(); } @Override public long getGroupId(int groupPosition) { // TODO Auto-generated method stub return groupPosition; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View gv; if (convertView == null) gv = newGroupView(parent); else gv = convertView; bindGroupView(gv, group.get(groupPosition), groupFrom, groupTo); return gv; } private void bindGroupView(View gv, Map<String, Object> map, String[] groupFrom, int[] groupTo) { // TODO Auto-generated method stub ImageView iv = (ImageView) gv.findViewById(groupTo[0]); iv.setImageResource((Integer) map.get(groupFrom[0])); } private View newGroupView(ViewGroup parent) { // TODO Auto-generated method stub return inflater.inflate(glayout, parent, false); } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return true; } }
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>