ExpandableListView自定义Adapter

来源:互联网 发布:淘宝开店后如何推广 编辑:程序博客网 时间:2024/06/07 00:25
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"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击