ExpandableListView的简单使用

来源:互联网 发布:mac 网络测速 编辑:程序博客网 时间:2024/06/08 09:52

1,xml中引入布局ExpandableListView

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent">    <ExpandableListView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/elv_main"></ExpandableListView></LinearLayout>

2,Adapter的编写,继承BaseExpandableListAdapter并实现抽象方法,并对应各个方法填充对应参数。注意一般前面一个id为parentId,后面一个为childId

public class MyExpandableListViewAdapter extends BaseExpandableListAdapter{    private Map<String,List<String>>data=new HashMap<>();    private String[] parentList=new String[]{};    private Context context;    public MyExpandableListViewAdapter(Context context, Map<String, List<String>> data, String[] parentList) {        this.context=context;        this.data=data;        this.parentList=parentList;    }    //  获得父项的数量    @Override    public int getGroupCount() {        return data.size();    }    //  获得某个父项的子项数目    @Override    public int getChildrenCount(int parentPos) {        return data.get(parentList[parentPos]).size();    }    //  获得某个父项    @Override    public Object getGroup(int parentPos) {        return data.get(parentList[parentPos]);    }    //  获得某个父项的某个子项    @Override    public Object getChild(int parentPos, int childPos) {        return data.get(parentList[parentPos]).get(childPos);    }    //  获得某个父项的id    @Override    public long getGroupId(int parentPos) {        return parentPos;    }    //  获得某个父项的某个子项的id    @Override    public long getChildId(int parentPos, int childPos) {        return childPos;    }    //  按函数的名字来理解应该是是否具有稳定的id,这个函数目前一直都是返回false,没有去改动过    @Override    public boolean hasStableIds() {        return false;    }    //  获得父项显示的view    @Override    public View getGroupView(int parentPos, boolean b, View view, ViewGroup viewGroup) {        if (view==null){            LayoutInflater inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);            view=inflater.inflate(R.layout.parent_item,null);        }        view.setTag(R.layout.parent_item,parentPos);        view.setTag(R.layout.child_item,-1);        TextView text = (TextView) view.findViewById(R.id.parent_title);        text.setText(parentList[parentPos]);        return view;    }    @Override    public View getChildView(int parentPos, int childPos, boolean b, View view, ViewGroup viewGroup) {        if (view == null) {            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);            view = inflater.inflate(R.layout.child_item, null);        }        view.setTag(R.layout.parent_item, parentPos);        view.setTag(R.layout.child_item, childPos);        TextView text = (TextView) view.findViewById(R.id.child_title);        text.setText(data.get(parentList[parentPos]).get(childPos));        text.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Toast.makeText(context, "点到了内置的textview", Toast.LENGTH_SHORT).show();            }        });        return view;    }    //  子项是否可选中,如果需要设置子项的点击事件,需要返回true    @Override    public boolean isChildSelectable(int i, int i1) {        return true;    }}
3,Activity中引用

public class MainActivity extends AppCompatActivity {    private ExpandableListView elv_main;    private MyExpandableListViewAdapter adapter;    private Map<String,List<String>> data=new HashMap<>();    private String[] parentList=new String[]{"first","second","third"};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        elv_main=findViewById(R.id.elv_main);        initData();        adapter=new MyExpandableListViewAdapter(this,data,parentList);        elv_main.setAdapter(adapter);    }    private void initData() {        for (int i=0;i<parentList.length;i++){            List<String> list=new ArrayList<>();            for (int j=0;j<8;j++){                list.add("item"+j);            }            data.put(parentList[i],list);        }    }}
到这里就没了,很简单


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 滑石粉成分 进口滑石粉 塑料滑石粉 滑石粉生产厂家 改性滑石粉 滑石粉报价 滑石粉过敏症状 工业滑石粉 桂花滑石粉 滑石粉密度 滑石粉价格表 黑滑石粉 滑石粉的价格 滑石粉生产工艺 超细滑石粉 滑石粉出口许可证 滑石粉多少钱一袋 555滑石粉 桂花牌滑石粉 滑石粉比重 食用滑石粉 爽身粉 滑石粉 滑石粉多少钱 滑石粉品牌 滑石粉价格 什么是滑石粉 滑石粉的作用 滑石粉作用 滑石粉是什么 滑石粉多少钱一吨 滑石粉批发价格 滑石粉在哪里买 滑石粉哪里有卖 医用滑石粉厂家 滑石粉厂家直销 滑石粉在哪买 医用滑石粉价格 卖滑石粉 滑石粉原料 滑石粉 价格 滑石粉生产厂