ExpandableListView(三)只展开一个group,没有child不展开group
本文是自己在实践中,发现的问题。
有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group
在一个ExpandableListView,如何实现只展开一个group,方法如下:
- mListView.setOnGroupExpandListener(new OnGroupExpandListener() {
- @Override
- public void onGroupExpand(int groupPosition) {
- // TODO Auto-generated method stub
- for (int i = 0; i < mAdapter.getGroupCount(); i++) {
- if (groupPosition != i) {
- mListView.collapseGroup(i);
- }
- }
- }
- });
效果图:

上图的效果,看上去很好,但是存在一个问题,虽然只展开了一个group,但是在点击下一个group的时候,该group的标题不会置顶,这就造成了一些困惑,为了解决这个问题,用到了下边的方法解决:
重写setOnGroupClickListener方法
首先要有一个sign,可以是int sign,用来记录group展开的状态
- private int sign= -1;//控制列表的展开
重写
onGroupClick方法
- //只展开一个group的实现方法
- mListView.setOnGroupClickListener(new OnGroupClickListener() {
- @Override
- public boolean onGroupClick(ExpandableListView parent, View v,
- int groupPosition, long id) {
- // TODO Auto-generated method stub
- if (sign== -1) {
- // 展开被选的group
- mListView.expandGroup(groupPosition);
- // 设置被选中的group置于顶端
- mListView.setSelectedGroup(groupPosition);
- sign= groupPosition;
- } else if (sign== groupPosition) {
- mListView.collapseGroup(sign);
- sign= -1;
- } else {
- mListView.collapseGroup(sign);
- // 展开被选的group
- mListView.expandGroup(groupPosition);
- // 设置被选中的group置于顶端
- mListView.setSelectedGroup(groupPosition);
- sign= groupPosition;
- }
- return true;
- }
- });
运行,看一下效果:

至此,在只打开一个group的同时,标题置顶
最后,补充一下,在group没有child的情况下,不展开group
- // 这里是控制如果列表没有孩子菜单不展开的效果
- mListView
- .setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
- @Override
- public boolean onGroupClick(ExpandableListView parent,
- View v, int groupPosition, long id) {
- // TODO Auto-generated method stub
- if (childData.get(groupPosition).isEmpty()) {// isEmpty没有
- return true;
- } else {
- return false;
- }
- }
- });
ExpandableListView(三)只展开一个group,没有child不展开group的更多相关文章
- 控制cxGrid 主从表的明细只展开一个
procedure TForm.ADetailDataControllerCollapsing( ADataController: TcxCustomDataController; ARecordIn ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- Android 实现两个list分别出现(在某一时刻只出现一个控件)
第一种方法: 在.xml文件中将这两个List分别放入不同的布局管理器中,比如说 <RelativeLayout android:layout_width="match_parent& ...
- Linux内核设计第三周——构造一个简单的Linux系统
Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...
- C# 只启动一个实例完全解决方案
工作上经常会遇到"程序只能启动一个实例"这样的需求. 我想,这样的需求应该很普遍,所以没打算去动脑筋,去找谷歌问下就得了,用下来发现,不是这里不爽就是那里不行. 先说下我详细的几点 ...
- Python展开一个嵌套的序列
摘自<Python Cookbook> 4.6 任务 序列中的子序列可能是序列,子序列的子项仍有可能是序列,以此类推,则序列嵌套可以达到任意的深度.需要循环遍历一个序列,将其所有的子序列展 ...
- Directx11学习笔记【三】 第一个D3D11程序
在先前的解决方案中新建一个新的Win32项目FirstD3D11Demo.在写代码之前,我们必须先添加dx11所需要的库.为了链接dx库,右键项目选择属性->vc++目录,在包含目录中添加你所安 ...
- 浅谈android中只使用一个TextView实现高仿京东,淘宝各种倒计时
今天给大家带来的是只使用一个TextView实现一个高仿京东.淘宝.唯品会等各种电商APP的活动倒计时.近期公司一直加班也没来得及时间去整理,今天难得歇息想把这个分享给大家.只求共同学习,以及自己兴许 ...
- 从米家到 HomeKit,你只需要一个树莓派
转载:从米家到 HomeKit,你只需要一个树莓派 2017.10.21 该教程针对 Raspbian Stretch (8 月起基于新版 Debian 的系统)更新,请注意文章中提示 Stretch ...
随机推荐
- struts2在result中使用el表达式碰到的问题
<result name="success">/html/portlet/ext/trainingmanagement/download_file.jsp?path=$ ...
- c语言中的制表符\t与空格
(本文不讨论制表符与空格缩进问题) 编程过程中,我们常常用多个空格或制表符分隔两个字符串,那么这两个在显示效果上有什么区别呢? 比较如下两行代码的输出效果 代码1: printf("1\t1 ...
- Glib程序使用Valgrind查找内存泄露
G_DEBUG=gc-friendly G_SLICE=always-malloc //glib有缓存 故需使用 上述两条设置环境变量 G_SLICE和G_DEBUG排除由内存分配机制带来的 ...
- 20.org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actua ...
- 14.java.lang.EOFException
java.lang.EOFException 文件已结束异常 当程序在输入的过程中遇到文件或流的结尾时,引发异常.因此该异常用于检查是否达到文件或流的结尾
- Syslog Cisco Incident
http://www.cisco.com/web/about/security/intelligence/identify-incidents-via-syslog.html
- iOS 4.2 SDK安装
iOS 4.2 SDK安装 ◆系统版本:10.6.5 ◆硬件配置: ◆10G空间,3.5G内存,显卡:GMA950 Xcode 3.2.5和iOS 4.2 SDK下载:http://developer ...
- Java程序员快速入门Go语言
这篇文章帮助Java程序员快速入门Go语言. 转载至 开源中国社区. http://www.oschina.net 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将 ...
- HTML加载顺序总结测试
首先,页面加载顺序:解析HTML结构.加载外部脚本和样式表文件.解析并执行脚本代码.构造HTML DOM模型.加载图片等外部文件.页面加载完毕. 也就是:html → head → title → # ...
- window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;
页面1 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8 ...