如何保持ExpandableListView处于展开状态?

我用

SimpleExpandableListAdapter

在我的

ExpandableListActivity

当用户点击组行时,展开的子列表将显示,当用户单击展开列表中的每个子项时,用户将被导航到下一个second_Activity。 目前,当用户点击返回button从second_Activity返回到ExpandableListActivity时,展开列表被初始化为未展开,我想展开列表保持展开状态,以便用户先前知道他select了哪个项目。 怎么做? ExpandableListActivity应该重写哪个方法?

PS:我知道我应该把getExpandableListView().expandGroup(groupPosition); 某处,但在哪里? 我试图把这个代码放在onGroupClick()onChildClick() ,但这没有帮助。

Solutions Collecting From Web of "如何保持ExpandableListView处于展开状态?"

对于总是展开的组,我扩展了SimpleExpandableListAdapter,并将该组设置为在getGroupView方法中展开:

 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View v = super.getGroupView(groupPosition, isExpanded, convertView, parent); ExpandableListView eLV = (ExpandableListView) parent; eLV.expandGroup(groupPosition); return v; } 

我正在浏览试图find我自己的ExpandableListView问题的解决scheme。 无论如何,我的2美分添加到adstro提供的答案。

这个概念很简单:首先调用ExpandableList AdaptergetGroupCount()函数来查找组数,然后遍历组并调用ExpandableList 视图expandGroup(int GroupPos)函数来展开每个组。

上面的代码应该放在onCreate()和onResume()中,以便在创build之后为第一次创build和返回活动提供支持。

我做了类似的事情,除了让所有的小组一直在扩大。 为了做到这一点,我通过ExpandableListActivity.getExpandableListView()得到了一个ListView的句柄,并使用ExpandableListView.expandGroup(int groupPos)来展开这个组。

对于你的情况,你可以跟踪哪些组被扩展,并且一旦活动再次被加载,重新展开它们。

希望这可以帮助。

另一件事…我把这个代码放在OnCreate()中。

  @Override View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View v = super.getGroupView(groupPosition, isExpanded, convertView, parent); ExpandableListView eLV = (ExpandableListView) parent; eLV.expandGroup(groupPosition); return v; } 

之后

  expListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Toast.makeText(getApplicationContext(),listDataHeader.get(groupPosition) + " : " + listDataChild.get(listDataHeader.get(groupPosition)).get(childPosition),Toast.LENGTH_SHORT).show(); return false; } }); 

onResume

为我工作。 滚动没问题。

由straya提供的解决scheme不适用于Android 2.3.3。 滚动列表后,您的ExpandableListView将失去焦点,点击事件将停止工作。

我这样做了:

 ExpandableAdpater adapter=new ExpandableAdapter(context); expandableListView.setAdapter(adapter); for (int i = 0; i < listResponse.size(); i++) { expandableListView.expandGroup(i); }