相关文章:
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;
}
});