ExpandableListView(三)只展开一个group,没有child不展开group
来源:互联网 发布:彩票开奖数据接口 编辑:程序博客网 时间:2024/04/30 01:46
本文是自己在实践中,发现的问题。
有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个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;//控制列表的展开
- //只展开一个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;
- }
- }
- });
0 0
- ExpandableListView(三)只展开一个group,没有child不展开group
- ExpandableListView(三)只展开一个group,没有child不展开group
- ExpandableListView(三)只展开一个group,没有child不展开group
- ExpandableListView只展开一个Group
- ExpandableListView只展开一个Group
- ExpandableListView 功能界面布局探究之三(没有child的下拉列表,group不展开的实现)
- ExpandableListView展开所有Group
- ExpandableListView 功能界面布局探究之二(只展开一个group的实现)
- Android之ExpandableListView的属性(Group不展开)
- Android之ExpandableListView的属性(Group不展开)
- Android之ExpandableListView的属性(Group不展开)
- Android之ExpandableListView的属性(Group不展开)
- Android之ExpandableListView的属性(Group不展开)
- ExpandableListView中包含多个group,想要展开一个group时,其他group都关闭:
- ExpandableListView的首次加载全部展开,并且点击Group不收缩,去掉Group左边的箭头
- ExpandableListView的首次加载全部展开,并且点击Group不收缩、
- ExpandableListView的首次加载全部展开,并且点击Group不收缩、
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- 第七章 知识导图
- android 自定义控件之滑动按钮
- [03] 使用 MVC 5 的 EF6 Code First 入门 系列:排序、筛选和分页
- 统一通信的发展趋势分析
- [04] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的连接恢复和命令拦截
- ExpandableListView(三)只展开一个group,没有child不展开group
- Spiral Matrix
- Linux core dump
- Android平台调用WebService详解
- iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法
- Android EditText控件
- [05] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署
- spring IOC 和 DI的意义
- java内部类回顾之静态内部类