如何解决在ExpandableListView中,如何检测组折叠?
| 在我的expandableListView中,我创建了一个自定义按钮来扩展/折叠组并使其正常工作,但是当没有折叠时。 用这个代码listView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent,View v,int groupPosition,long id) {
Log.d(\"group click\");
return true;
}
});
listView.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
Log.d(\"group collapse\");
}
});
listView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
Log.d(\"group expand\");
}
});
使用此代码:
当组折叠时:
单击按钮=展开组
单击组上的其他任何位置=
做某事
setOnGroupClickListener
组展开时:
点击按钮=折叠
组(好的,但是...)
单击组上的其他任何位置=
使小组崩溃而不反应
从setOnGroupClickListener
为什么单击展开的组时未加载“ 1”?
如何解决呢?
解决方法
我遇到了类似的问题。我需要所有群组始终保持扩展和可点击状态。为了使它起作用,我在
ExpandableListActivity
中编写了以下猴子代码:
public void onCreate(Bundle savedInstanceState) {
...
// Expanding all.
for(int i = 0; i < adapter.getGroupCount(); i++)
getExpandableListView().expandGroup(i);
...
}
@Override
public boolean onGroupClick(ExpandableListView parent,View v,int groupPosition,long id) {
overrideStupidListBehaviour(groupPosition);
return false;
}
@Override
public void onGroupCollapse(int groupPosition) {
// Forbidding it to collapse.
getExpandableListView().expandGroup(groupPosition);
overrideStupidListBehaviour(groupPosition);
}
private void overrideStupidListBehaviour(int groupPosition) {
// Code to do when onGroupClick is called
}
我真的很感兴趣,如果有正常的方法可以做到这一点。
,// Listview组的监听器
expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
Toast.makeText(getApplicationContext(),listDataHeader.get(groupPosition) + \" Collapsed\",Toast.LENGTH_SHORT).show();
}});
,使用这种方法非常简单
@Override
public View getGroupView(int groupPosition,boolean isExpanded,View convertView,ViewGroup parent) {
if(isExpanded){
//do something when expanded
}else{
//do something when collapsed or not expanded
}
...........
}
,如果您单击一个组,则每次都应调用它,但是如果您的按钮或其他可单击或可聚焦的对象在组视图中/在组视图中,则只会触发其他对象之上的对象的onClick方法...不是解决方案,请提供更多代码。
@folone
有一个更好的方法:
@Override
public boolean onGroupClick(ExpandableListView parent,long id) {
doSomething();
return true;
}
返回true应该取消大多数默认设置->展开/折叠
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。