ExpandableListView在onAvtivityResult方法里面展开group不成功
来源:互联网 发布:域名如何更换 编辑:程序博客网 时间:2024/04/29 00:55
今天实现ExpandableListView展开和关闭group功能时,重写了onActivityResult方法和onResume方法。
首先要知道展开group的方法是:
exList.expandGroup(groupPosition);//groupPosition的值从0开始
exList.collapseGroup(groupPosition);//groupPosition的值从0开始
其中,exList是ExpandableListView的对象。
onActivityResult方法是用来处理从第二个activity里面传回来的数据;onResume方法在启动activity时候回被自动执行,在我的项目中是为了刷新ExpandableListView子列表里面的内容,使用重新获取子列表内容和重新设置adapter的方法刷新内容。重新设置adapter就会把所有group都设置为非展开状态。
我想要在第二个activity(项目中是RecordNewItemActivity)被finish掉的时候将修改的数据分类传回给第一个activity(项目中是GuideActivity),所以在GuideActivity里面使用
startActivityForResult(intent,0);//第二个参数可以是大于等于0的任意值
setResult(RESULT_OK,intent);
然后在onActivityResult方法里面处理返回来的数据。
如果直接在onActivityResult方法中设置group展开,代码如下:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode){ case RESULT_OK: Bundle bundle = data.getExtras(); type_result = bundle.getString("type"); for(int i = 0;i<type.length;i++){ if( type[i].equals(type_result)){ Toast.makeText(context,""+type[i].equals(type_result),Toast.LENGTH_SHORT).show(); exList.expandGroup(i); } } break; } }
这样运行之后不能展开group,但是Toast确确实实已经被执行了!
下面是onResume方法的代码:
/** *用于实现当从其他activity返回到该activity时,刷新该activity的列表内容 */ @Override protected void onResume() { super.onResume(); refrash(); }
refrash方法的代码如下:
/** * 刷新列表内容 */ public void refrash(){ getChildsContent();// adapter.notifyDataSetChanged(); setListData(); }
getChildsContent方法用来从SQLite里面读取到每个分组的内容。
setListData方法用来为ExpandableListView的对象exList添加适配器。代码如下:
/** * 设置列表里面的内容 */ public void setListData() { adapter = new MyBaseExpandableListAdapter(context,groups,childs_name,childs_account); setListAdapter(adapter); }
于是修改代码,让expandGroup方法在refrash方法里面执行,正确的代码是这样的:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode){ case RESULT_OK: Bundle bundle = data.getExtras(); type_result = bundle.getString("type"); break; } }
/** * 刷新列表内容 */ public void refrash(){ getChildsContent();// adapter.notifyDataSetChanged(); setListData(); for(int i = 0;i<type.length;i++){ if( type[i].equals(type_result)){ Toast.makeText(context,""+type[i].equals(type_result),Toast.LENGTH_SHORT).show(); exList.expandGroup(i); } } }
这样在finish掉RecordNewItemActivity之后,GuideActivity首先执行onActivityResult方法,获取到了从RecordNewItemActivity传回来的值,然后执行onResume方法。onResume方法首先重新添加适配器,这时的分组都是闭合着的,然后判断应该哪一组展开并设置展开,这样闭合的group就被展开了。任务完成。
总结一下:
1.展开group的方法是exList.expandGroup(groupPosition);
2.闭合group的方法是exList.collapseGroup(groupPosition);
3.当需要同时重写onResume方法和onActivityResult方法时,两个方法的执行顺序是:先执行onActivityResult方法,然后执行onResume方法,所有有些操作一定要想好应该怎么执行!
总算是解决了这个小问题,心里畅快多了!
0 0
- ExpandableListView在onAvtivityResult方法里面展开group不成功
- ExpandableListView展开所有Group
- ExpandableListView只展开一个Group
- ExpandableListView只展开一个Group
- ExpandableListView(三)只展开一个group,没有child不展开group
- ExpandableListView(三)只展开一个group,没有child不展开group
- ExpandableListView(三)只展开一个group,没有child不展开group
- Android之ExpandableListView的属性(Group不展开)
- Android之ExpandableListView的属性(Group不展开)
- Android之ExpandableListView的属性(Group不展开)
- Android之ExpandableListView的属性(Group不展开)
- Android之ExpandableListView的属性(Group不展开)
- ExpandableListView中包含多个group,想要展开一个group时,其他group都关闭:
- ExpandableListView的首次加载全部展开,并且点击Group不收缩,去掉Group左边的箭头
- expandablelistview学习--在listView里面嵌套GridView
- expandablelistview学习--在listView里面嵌套GridView
- expandablelistview学习--在listView里面嵌套GridView
- expandablelistview学习--在listView里面嵌套GridView
- Java网络编程_基于TCP协议的网络编程(二)
- 【C语言】结构体指针
- 考前准备秘诀----转自Bvoid大神
- 致自己,不管路有多远,只要始终前行就会到达彼岸
- 1036: [ZJOI2008]树的统计Count
- ExpandableListView在onAvtivityResult方法里面展开group不成功
- poj 2528 Mayor's posters(线段树+离散化)
- 快捷键
- codis中redis-port工具的使用
- HDU 1175 连连看(dfs,bfs)
- 段落排版--行间距(行高)
- WKT转换工具terraformers
- Lua 初学者需要注意的地方
- CSS定位学习