ExpandableListView(三)只展开一个group,没有child不展开group
2013-09-16 11:24
393 查看
本文是自己在实践中,发现的问题。
有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group
在一个ExpandableListView,如何实现只展开一个group,方法如下:
[java] view
plaincopy
mListView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
for (int i = 0; i < mAdapter.getGroupCount(); i++) {
if (groupPosition != i) {
mListView.collapseGroup(i);
}
}
}
});
效果图:
上图的效果,看上去很好,但是存在一个问题,虽然只展开了一个group,但是在点击下一个group的时候,该group的标题不会置顶,这就造成了一些困惑,为了解决这个问题,用到了下边的方法解决:
重写setOnGroupClickListener方法
首先要有一个sign,可以是int sign,用来记录group展开的状态
[java] view
plaincopy
private int sign= -1;//控制列表的展开
重写onGroupClick方法
[java] view
plaincopy
//只展开一个group的实现方法
mListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
// TODO Auto-generated method stub
if (sign== -1) {
// 展开被选的group
mListView.expandGroup(groupPosition);
// 设置被选中的group置于顶端
mListView.setSelectedGroup(groupPosition);
sign= groupPosition;
} else if (sign== groupPosition) {
mListView.collapseGroup(sign);
sign= -1;
} else {
mListView.collapseGroup(sign);
// 展开被选的group
mListView.expandGroup(groupPosition);
// 设置被选中的group置于顶端
mListView.setSelectedGroup(groupPosition);
sign= groupPosition;
}
return true;
}
});
运行,看一下效果:
至此,在只打开一个group的同时,标题置顶
最后,补充一下,在group没有child的情况下,不展开group
[java] view
plaincopy
// 这里是控制如果列表没有孩子菜单不展开的效果
mListView
.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent,
View v, int groupPosition, long id) {
// TODO Auto-generated method stub
if (childData.get(groupPosition).isEmpty()) {// isEmpty没有
return true;
} else {
return false;
}
}
});
有时候想让界面更加的人性化,就要实现很多的效果,比如只展开一个group,在点击下个group的同时,关闭之前的group
在一个ExpandableListView,如何实现只展开一个group,方法如下:
[java] view
plaincopy
mListView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
for (int i = 0; i < mAdapter.getGroupCount(); i++) {
if (groupPosition != i) {
mListView.collapseGroup(i);
}
}
}
});
效果图:
上图的效果,看上去很好,但是存在一个问题,虽然只展开了一个group,但是在点击下一个group的时候,该group的标题不会置顶,这就造成了一些困惑,为了解决这个问题,用到了下边的方法解决:
重写setOnGroupClickListener方法
首先要有一个sign,可以是int sign,用来记录group展开的状态
[java] view
plaincopy
private int sign= -1;//控制列表的展开
重写onGroupClick方法
[java] view
plaincopy
//只展开一个group的实现方法
mListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
// TODO Auto-generated method stub
if (sign== -1) {
// 展开被选的group
mListView.expandGroup(groupPosition);
// 设置被选中的group置于顶端
mListView.setSelectedGroup(groupPosition);
sign= groupPosition;
} else if (sign== groupPosition) {
mListView.collapseGroup(sign);
sign= -1;
} else {
mListView.collapseGroup(sign);
// 展开被选的group
mListView.expandGroup(groupPosition);
// 设置被选中的group置于顶端
mListView.setSelectedGroup(groupPosition);
sign= groupPosition;
}
return true;
}
});
运行,看一下效果:
至此,在只打开一个group的同时,标题置顶
最后,补充一下,在group没有child的情况下,不展开group
[java] view
plaincopy
// 这里是控制如果列表没有孩子菜单不展开的效果
mListView
.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent,
View v, int groupPosition, long id) {
// TODO Auto-generated method stub
if (childData.get(groupPosition).isEmpty()) {// isEmpty没有
return true;
} else {
return false;
}
}
});
相关文章推荐
- ExpandableListView(三)只展开一个group,没有child不展开group
- ExpandableListView(三)只展开一个group,没有child不展开group
- ExpandableListView(三)只展开一个group,没有child不展开group
- ExpandableListView 功能界面布局探究之三(没有child的下拉列表,group不展开的实现)
- ExpandableListView 功能界面布局探究之二(只展开一个group的实现)
- ExpandableListView(三)只展开一个group,没有child不展开group
- 关于ExpandableListView中如果group中没有child遇到的问题
- ExpandableListView 展开childView后,childView及GroupView布局错乱的问题
- ExpandableListView 删除group notifyDataSetChanged child重复
- android ExpandableListView 为Group与Child添加菜单
- 跪求大神!!!探讨android ExpandableListView group展开后如何不出屏幕
- android 关于ExpandableListView单击一个group其他的group关闭,此group标题应该顶头
- Android之ExpandableListView的属性(Group不展开)
- ExpandableListView点击Group动态获取Child数据源
- 求助 ExpandableListView group的item有间距child间隔不变
- Android中的ExpandableListView的使用,以及点击时间禁用,并展开group,去掉小三角
- Android之ExpandableListView的属性(Group不展开)
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- Android - ExpandableListView的group里添加button后不能展开的解决方法