ExpandableListView(三)只展开一个group,没有child不展开group
2024-08-28 19:04:44
本文是自己在实践中,发现的问题。
有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个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;
- }
- }
- });
最新文章
- SELECT CAST(GETDATE() AS VARCHAR(10)) 显示不同格式的原因
- ActiveMQ与WebSocket的结合应用
- thinkphp 项目分组 -开发随笔1
- Spring Integration - 自动轮询发送手机短信
- [MySQL]安装和启动
- linux man使用方法 和centos安装中文man包 --转
- 《零成本实现Web自动化测试--基于Selenium》第三章 Selenium-IDE
- git-svn 的使用
- UI原则之-拼车
- Eureka学习例子
- Data Base mongodb高版本与低版本的区别
- weex 启动 ios 模拟器
- [css 揭秘]:CSS揭秘 技巧(二):多重边框
- C#单例模式的几种实现方式
- Java泛型相关总结(下)
- [solution]JZOJ-5838 旅游路线
- python 条件语句和基础数据类型
- collectionView代理方法快速设置cell大小上下左右间隔
- [leetcode]Populating Next Right Pointers in Each Node II @ Python
- 【spring mvc】扒一扒tomcat
热门文章
- Unhandled Exxception “Unhandled exception type IOException”?
- jquery的$().each,$.each的区别与应用
- spoj ONP - Transform the Expression 中缀转后缀
- Scala类型声明与定义、函数定义、流程控制、异常处理
- windbg命令学习4
- rsyslog ~ 波浪号
- libvirt C-API
- 关于java同步包中ConcurrentLinkedQueue类的深入分析与理解
- struts2 全局格式化,格式化时间,金钱,数字
- 经常使用的DB2命令(2)