Android ExpandableListView group开闭及置顶

前言
  ExpandableListView控件在Android中并不常见,官方的解释是一种用于垂直滚动展示两级列表的视图,和ListView的不同之处就是它可以展示两级列表,分组可以单独展开显示子选项。这些选项的数据是通过ExpandableListAdapter关联的。
  关于ExpandableListView控件的使用方法网上有很多介绍,本篇只介绍关于group组的单一开闭及如何将group组置顶的用法。

演示
先看效果图

Android ExpandableListView group开闭及置顶_第1张图片
GIF.gif

ExpandableListView group开闭及置顶

  • 单个group的开闭:只展开一个group,在点击下个group的同时,关闭之前的group,这主要涉及3的api的使用:
    **
    ExpandableListView.expandGroup(groupPos);// 在分组列表视图中展开一个组ExpandableListView.collapseGroup(groupPos)// 在分组列表视图中折叠组 ExpandableListView.setSelectedGroup(groupPosition);//置顶,将选择设置为指定的组
    **

主要逻辑代码如下

private ExpandableListView mElCommonNum;//获取控件
private int mCurrentPosition = -1;//开关标志
mElCommonNum.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {   
     @Override    
      public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {        
      // 自己控制他们打开或者关闭        
      // elCommonNum.expandGroup(groupPos);// 打开        
      // elCommonNum.collapseGroup(groupPos)// 关闭       
      // elCommonNum.setSelectedGroup(groupPosition);//置顶        
      if (mCurrentPosition == -1) {// 一个没有打开              
          mElCommonNum.expandGroup(groupPosition);            
          mCurrentPosition=groupPosition;            
          mElCommonNum.setSelectedGroup(groupPosition);       
       } else {// 至少有一个打开            
          // 判断一下是否点击自己            
          if(mCurrentPosition==groupPosition){                          
              mElCommonNum.collapseGroup(mCurrentPosition);                
              mCurrentPosition=-1;                
              return true;            
       }           
       // 关闭上一个                      
        mElCommonNum.collapseGroup(mCurrentPosition);                  
        mElCommonNum.expandGroup(groupPosition);            
        mElCommonNum.setSelectedGroup(groupPosition);            
        // 更新position           
       mCurrentPosition=groupPosition;        
    }        
     return true;    
  }}
);

你可能感兴趣的:(Android ExpandableListView group开闭及置顶)