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;
      }
     }
    });

 

 

更多相关文章

  1. React Native开发指南
  2. Android(安卓)开源组件PagerBottomTabStrip 快速构建底部导航栏
  3. 【 Android(安卓)10 系统启动 】系列 -- Launcher(应用门户)
  4. Android(安卓)ListView中onItemClickListener事件失效的解决方法
  5. android MediaCodec ACodec OMX tips
  6. Android判断现在所处界面是否为home主桌面的方法
  7. Android获得内/外置存储卡路径的方法
  8. android 获取网络数据,回传到本地用TextView显示乱码问题解决方法
  9. Android进程间通信(二):通过AIDL介绍Binder的工作机制

随机推荐

  1. MySQL深入研究:快速安装MySQL
  2. 谈谈我在北理工博士分享会学习到的东西
  3. 结合HTTP 502-504 状态码学习Nginx配置
  4. spring cloud alibaba 组件版本关系
  5. 李飞飞老师离开谷歌?谣言而已
  6. 一次华为昇腾服务器OS部署过程
  7. 电脑本地改变IP如何实现??
  8. Linux下升级python3到python3.8
  9. html中节点的常用属性和方法
  10. JavaScript对象与其复制清除方法简析