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