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地址

Android 仿QQ好友列表功能实现相关推荐

  1. android 仿qq好友列表分组效果及联系人分组效果

     历史记录仿QQ好友列表的动态效果 以及联系人的分组效果 QQ朋友分组的功能做的不错,大家都很认可,那么到底他的分组并且滑动的时候,标题能停留在顶部是如何实现的呢?今天从网上搜索了一下资料,自己运行了 ...

  2. android的实现关注好友功能,android仿微信好友列表功能

    android studio实现微信好友列表功能,注意有一个jar包我没有放上来,请大家到MainActivity中的那个网址里面下载即可,然后把pinyin4j-2.5.0.jar复制粘贴到项目的a ...

  3. Android仿QQ好友列表分组实现增删改及持久化

    Android自带的控件ExpandableListView实现了分组列表功能,本案例在此基础上进行优化,为此控件添加增删改分组及子项的功能,以及列表数据的持久化. Demo实现效果:     Dem ...

  4. html仿qq最小化怎么实现,JS仿QQ好友列表展开、收缩功能(第一篇)

    JS仿QQ好友列表展开.收缩功能(第一篇) 发布时间:2020-10-17 14:20:03 来源:脚本之家 阅读:96 作者:erdouzhang 效果图如下所示: html: 我的好友 张三 李四 ...

  5. android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果

    本文实例为大家分享了Android UI仿QQ好友列表分组悬浮效果的具体代码,供大家参考,具体内容如下 楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeade ...

  6. qq列表展开多个html代码,JS仿QQ好友列表展开、收缩功能(第二篇)

    在上篇的基础上继续完善,点击一个li元素,其他li元素上的类名清除掉. 效果图如下所示: js: window.onload = function(){ var list = document.get ...

  7. android 实现QQ好友列表(扩展listview:ExpandableListView)

    在某些android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的.接触Android,也才一年的时间,大部分时间花在工作上(解bug...),界面上开发很少参与.自己维护的系统应用 ...

  8. android 实现QQ好友列表

    在某些android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的.接触Android,也才一年的时间,大部分时间花在工作上(解bug...),界面上开发很少参与.自己维护的系统应用 ...

  9. iOS之仿QQ好友列表展开收缩效果的实现

    使用UICollectionView实现 思路 很明显整体它是一个列表,它的分组是一个列表,它里面的好友列表也是一个列表,所以就可以使用组头来设置分组列表,使用cell设置好友列表: 当点击组头的时候 ...

  10. 仿QQ好友列表,QListWidget!

    仿QQ好友列表, 设计逻辑: 设计qqItem类,再添加到widget中: 设计时布局等可以直接在ui中设计:内容设计通过代码实现: qqItem.cpp #include "qqitem. ...

最新文章

  1. ios 工具大全,最全框架
  2. tcp/ip 协议栈Linux源码分析一 IPv4分片报文重组分析一
  3. __str__的用法
  4. Debug Tensorflow: yolo模型检测框位置正确但类别不正确
  5. java并发包消息队列
  6. 【caffe-MATLAB】自己编译faster-rcnn的MATLAB版本
  7. DAVINCI开发原理之三----达芬奇编解码引擎Codec Engine(CE)
  8. Responsive Web Design
  9. 2007 Microsoft Office 加载项:Microsoft Save as PDF 或 XPS
  10. wps2019怎么调整字间距_wps2019表格和文字间距太大怎么调整?
  11. 422串口线互连的接法
  12. 2022年化肥行业发展趋势
  13. 我的世界中国版服务器家园系统,《我的世界》中国版“暑期更新”上线 家园系统休闲玩法亮点...
  14. Python中的PV操作
  15. 他把互联网“存”了起来!
  16. 个人微信公众号——定位策略
  17. 部署本地thinkphp6(iis+php7)
  18. 0pyqt获取textEdit控件的文本
  19. mysql 事件及定时器
  20. Translatium for Mac(Google在线翻译工具)的使用说明

热门文章

  1. 微信分享appID注册一次后即绑定该应用?
  2. 汶川大地震引起最近全国人民心理一定程度的恐慌问题
  3. 魔界/指环王三部曲(加长版)在线观看免费bt下载
  4. 【Leetcode刷题Python】739. 每日温度
  5. Windows10系统无法更改默认浏览器等默认设置
  6. 做读书笔记好用的软件分享
  7. 电脑族:常点眼药水,还得干眼症?
  8. mysql resource_MySQL - Resource temporarily unavailable问题处理
  9. SpringBoot 使用freemarker 处理文档,找不到文件位置(报错:basePackagePath=““ /* relatively to resourceLoaderClass pkg)
  10. 笔记本开热点手机一直显示正在获取ip