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