博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ExpandableListView视图树简单应用
阅读量:6888 次
发布时间:2019-06-27

本文共 5594 字,大约阅读时间需要 18 分钟。

首先我们要自定义一个adapter来继承BaseExpandableListAdapter;

package com.example.tree;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.AbsoluteLayout;import android.widget.AbsoluteLayout.LayoutParams;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.TextView;public class TreeAdapter extends BaseExpandableListAdapter {    private String[] groups;    private String[][] chlids;    private Context context;    public TreeAdapter(String[] groups, String[][] chlids, Context context) {        this.groups = groups;        this.chlids = chlids;        this.context = context;    }    //父项长度    @Override    public int getGroupCount() {        // TODO Auto-generated method stub        return groups.length;    }    //子项长度    @Override    public int getChildrenCount(int groupPosition) {        // TODO Auto-generated method stub        return chlids[groupPosition].length;    }    //返回父项对象    @Override    public Object getGroup(int groupPosition) {        // TODO Auto-generated method stub        return groups[groupPosition];    }    //返回子项对象    @Override    public Object getChild(int groupPosition, int childPosition) {        // TODO Auto-generated method stub        return chlids[groupPosition][childPosition];    }    //返回父项id    @Override    public long getGroupId(int groupPosition) {        // TODO Auto-generated method stub        return groupPosition;    }    //返回子项id    @Override    public long getChildId(int groupPosition, int childPosition) {        // TODO Auto-generated method stub        return childPosition;    }        @Override    public boolean hasStableIds() {        // TODO Auto-generated method stub        return true;    }    //创建textview方法    private TextView buildTextView() {        AbsListView.LayoutParams p = new AbsListView.LayoutParams(                ViewGroup.LayoutParams.FILL_PARENT,                ViewGroup.LayoutParams.WRAP_CONTENT);        TextView tv = new TextView(context);        tv.setLayoutParams(p);        tv.setTextSize(20);        tv.setPadding(60, 5, 10, 5);        return tv;    }    //返回父项视图    @Override    public View getGroupView(int groupPosition, boolean isExpanded,            View convertView, ViewGroup parent) {        TextView tv = buildTextView();        tv.setText(groups[groupPosition].toString());        return tv;    }    //返回子项视图    @Override    public View getChildView(int groupPosition, int childPosition,            boolean isLastChild, View convertView, ViewGroup parent) {        TextView tv = buildTextView();        tv.setText(chlids[groupPosition][childPosition].toString());        return tv;    }    //设置子项是否可以点击    @Override    public boolean isChildSelectable(int groupPosition, int childPosition) {        // TODO Auto-generated method stub        return true;    }}

布局文件

activity

package com.example.tree;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnGroupClickListener;import android.widget.ExpandableListView.OnGroupCollapseListener;import android.widget.ExpandableListView.OnGroupExpandListener;import android.widget.Toast;import android.widget.ExpandableListView.OnChildClickListener;public class MainActivity extends Activity {    private ExpandableListView ex;    private TreeAdapter adapter;    private String[] groups = { "吉林", "辽宁", "黑龙江", "湖南" };    private String[][] childs = { { "长春", "四平", "通话" }, { "大连", "沈阳" },            { "绥芬河", "哈尔冰" }, { "长沙" } };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ex = (ExpandableListView) findViewById(R.id.ex);        adapter = new TreeAdapter(groups, childs, this);        //注册上下文菜单         //super.registerForContextMenu(ex);        ex.setAdapter(adapter);        // 子项的点击事件        ex.setOnChildClickListener(new OnChildClickListener() {            @Override            public boolean onChildClick(ExpandableListView parent, View v,                    int groupPosition, int childPosition, long id) {                Toast.makeText(MainActivity.this,                        childs[groupPosition][childPosition], 1000).show();                return false;            }        });        //父项点击事件        ex.setOnGroupClickListener(new OnGroupClickListener() {                        @Override            public boolean onGroupClick(ExpandableListView parent, View v,                    int groupPosition, long id) {                // TODO Auto-generated method stub                Toast.makeText(MainActivity.this,                        groups[groupPosition], 1000).show();                return false;            }        });        //父项关闭事件        ex.setOnGroupCollapseListener(new OnGroupCollapseListener() {                        @Override            public void onGroupCollapse(int groupPosition) {                // TODO Auto-generated method stub                Toast.makeText(MainActivity.this,                        "关闭", 1000).show();            }        });        //父项打开事件        ex.setOnGroupExpandListener(new OnGroupExpandListener() {                        @Override            public void onGroupExpand(int groupPosition) {                // TODO Auto-generated method stub                Toast.makeText(MainActivity.this,                        "打开", 1000).show();            }        });    }}

 

转载于:https://www.cnblogs.com/84126858jmz/p/4902728.html

你可能感兴趣的文章
2017"百度之星"程序设计大赛 - 资格赛-度度熊与邪恶大魔王(dp+后缀最小值)
查看>>
Node + vue 实现移动官网
查看>>
Windows上Python2.7安装Scrapy过程
查看>>
【转载】C#调用国家气象局天气预报接口
查看>>
hdu1568
查看>>
375 Inscribed Circles and Isosceles Triangles 等腰三角形 内接圆 圆周率PI表示
查看>>
apache中开启rewrite
查看>>
JQuery find方法Bug
查看>>
PAT (Advanced Level) 1108. Finding Average (20)
查看>>
FZU 1911 Construct a Matrix
查看>>
CodeForces 667C Reberland Linguistics
查看>>
CodeForces 747D Winter Is Coming
查看>>
CSS动画(3) - animation
查看>>
URL重写
查看>>
JavaScript 面试题,给大家补补基础,加加油,埋埋坑!
查看>>
Java LinkedHashMap类源码解析
查看>>
peer review
查看>>
陶哲轩实分析 习题 13.5.6
查看>>
switch语句
查看>>
给linux swapfile 扩容
查看>>