相關文章:
Android中ExpandableListView常用屬性總結
Android中ExpandableListView的使用(一)
最近翻看Android關于ExpandableListView的文檔,發現了幾個很有用的方法,在上一篇文章中沒有提及,是以新開了一篇文章來補充一下。
首先是接口部分

除了可以設定子類被點選的監聽器外,還可以設定父類被點選的監聽器,以及一個清單展開和收起的監聽器
接下來看一下具體的方法
收起某一個清單,參數為父類第幾項,如果是要收起第一個清單,那麼groupPos = 0. 如果這個清單已經收起了,傳回值為false,表示收起失敗,因為清單已經收起了。如果這個清單還沒有收起,那麼收起這個清單,傳回值為true。
展開清單的用法和收起清單的用法一樣,如果清單已經展開,傳回false,如果清單還沒有展開,傳回true。
關于清單的展開還有一個方法
比上一個方法多了一個參數,如果把這個參數設定為true,清單展開的時候會有動畫效果,該方法需在API大于等于14的時候才可以用
用于判斷清單是否展開的方法
清單已展開,傳回true;清單未展開,傳回false
上一篇文章中已經提到了為子類的點選事件設定監聽器的方法,這裡講一下為父類點選事件,清單收縮事件,清單展開事件設定監聽器的方法
為父類的點選事件設定監聽器
listview.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {
if (listview.isGroupExpanded(i)) {
listview.collapseGroup(i);
} else {
listview.expandGroup(i, true);
}
return true;
}
});
上面的代碼實作的效果是當父類被點選時,判斷清單是否展開,如果沒有展開的話就展開清單,如果清單已經展開,那麼收起清單
為清單收縮事件和展開事件設定監聽器
listview.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int i) {
Toast.makeText(ExpandableListViewTestActivity.this, "第" + i + "個清單收縮了", Toast.LENGTH_SHORT).show();
}
});
listview.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int i) {
Toast.makeText(ExpandableListViewTestActivity.this, "第" + i + "個清單伸展了", Toast.LENGTH_SHORT).show();
}
});
如果需要進入的時候清單就展開,然後不再收起,可以這樣設定:
在setAdapter之後周遊每一個清單使它們展開
for (int i = 0; i < parentList.length; i++) {
if (!listview.isGroupExpanded(i)) {
listview.expandGroup(i);
}
}
然後設定父類的監聽器直接傳回true即可,不可以設定父類的監聽器為null,那樣起不到屏蔽原先系統設定的監聽器的效果
listview.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {
return true;
}
});