ExpandableListview

在垂直滚动展示两级列表的的视图。这与ListView不同,它有组对象和子对象,通过点击组对象来单制度展开子对象的内容,它的适配器跟普通的ListView不一样,需要继承BaseExpandableListAdapter ,都是用来给View提供数据,展示布局。


ExpandableListView是Android中可以实现下拉ListView的一个控件,是ListView的子类。

老规矩,先来看下效果图:


就是这么 一个效果,有兴趣的话就往下看把

1.先来看下布局,没有添加任何属性

        <ExpandableListView        android:id="@+id/mElistview"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>

2.随便模拟了几个数据

    public String[] titleStrings = {"女朋友", "女神", "基友", "小弟"};    public String[][] nameStrings = {            {"苍井空", "波多野结衣", "小泽玛莉亚", "龙泽罗拉"},            {"鹿晗", "李易峰", "吴亦凡", "王俊凯"},            {"张先生", "刘先生", "李先生", "杜先生", "小弟弟"},            {"奥巴驴", "小学僧", "儿童劫", "托儿索"}    };

3.初始化数据源

  /**     * 初始化数据源     */    private void initList() {        List mList = new ArrayList<>();        for (int i = 0; i < titleStrings.length; i++) {            //创建组对象            TitleInfo info= new TitleInfo();            //循环添加组的标题名            info.setTitle(titleStrings[i]);            //创建子对象数据源            List list = new ArrayList<>();            for (int j = 0; j < nameStrings.length; j++) {                //创建子对象                ContentInfo info2 = new ContentInfo();                //添加用户名或者头像                info2.setName(nameStrings[i][j]);                //将子对象添加到数据源                list.add(info2);            }            //将子对象数据源复制给组对象            info.setInfo(list);            //将组对象添加到总数据源中            mList.add(info);        }    }

4.因为这是一个二级列表,所以它需要一个组对象的Bean和子对象的Bean,简洁说下参数

 TitleInfo:    private String            title;    private List info; ContentInfo:       public String name; //名称    private String qianming;//签名    private String icon;    //头像    

5.写一个适配器 extens BaseExpandableListAdapter,他会返回很多方法,我已经在代码中都注释了
6.适配器里面有两个xml文件,我把它们分为组布局和子布局
7.MainActivity设置适配器就可以展示基本的效果了
8.我模拟了当点击一个组对象关闭其他组对象列表的功能,在工具类EListViewUtils.java文件中,通过调用适配器中的onGroupExpanded()方法来获取点击组对象的位置
9.对于处理item的点击事件,还要设置监听器,常用的有这么几个类

  • setOnChildClickListener
  • setOnGroupClickListener
  • setOnGroupCollapseListener
  • setOnGroupExpandListener
    通过方法我们就会知道功能分别是击子选项、单击分组项、分组合并、分组展开的监听器。

代码就不贴了,太多,我已经给每一行添加过注释

项目Github地址

更多相关文章

  1. 探索Android该Parcel机制上
  2. 探索Android该Parcel机制(上)
  3. Android网络请求库——android-async-http使用
  4. Android(安卓)setContentView 实现同一个activity下不同view的切
  5. Android的性能优化
  6. Android中使用Handler造成内存泄露
  7. android面试题整理(2)
  8. 数据解析
  9. Android基础笔记(七)-页面跳转和数据传递

随机推荐

  1. Android SDK自定义更新
  2. Android中完全退出程序的四种方法
  3. Android用户界面开发(21):状态栏提示
  4. android 反射机制
  5. Android(安卓)Animation (动画设计)
  6. 切换tab的时候recyclerview滑动到最底部
  7. [Androidstudio]的坑之【@android:style/
  8. 转:Android(安卓)对话框【Dialog】去除白
  9. Android本地程序的printf输出到logcat中
  10. Android热修复之替换原有classes.dex的源