Android 仿QQ好友列表功能实现 - Go语言中文社区

Android 仿QQ好友列表功能实现


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<TitleInfo> mList = new ArrayList<>();
        for (int i = 0; i < titleStrings.length; i++) {
            //创建组对象
            TitleInfo info= new TitleInfo();
            //循环添加组的标题名
            info.setTitle(titleStrings[i]);
            //创建子对象数据源
            List<ContentInfo> 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<ContentInfo> 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地址

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_37711172/article/details/80006872
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:40:00
  • 阅读 ( 1307 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢