如何将ExpandableListView保持在展开状态?

时间:2010-10-21 14:08:20

标签: android

我用

  

SimpleExpandableListAdapter

在我的

  

ExpandableListActivity

当用户单击组行时,子列表将展开并显示,当用户单击展开列表中的每个子项时,用户将导航到下一个second_Activity。目前,当用户单击后退按钮从second_Activity返回到ExpandableListActivity时,可扩展列表被初始化为未展开,我希望可扩展列表保持扩展状态,以便用户先前知道他选择了哪个项目。怎么做?应该覆盖ExpandableListActivity中的哪个方法?

PS:我知道我应该把getExpandableListView().expandGroup(groupPosition);放在某个地方,但在哪里?我尝试将此代码放在onGroupClick()onChildClick()中,但这没有用。

6 个答案:

答案 0 :(得分:64)

对于总是扩展的组,我扩展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;
}

答案 1 :(得分:9)

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

概念很简单: 首先调用ExpandableList 适配器getGroupCount()函数以查找组数 然后,循环浏览组并调用ExpandableList的<{1}}函数查看以展开每个组。

以上代码应放在onCreate()和onResume()之内,以便在创建后随后适应第一次创建和返回活动。

答案 2 :(得分:3)

我做了类似的事情,除了我保持所有群体一直在扩展。为此,我通过ExpandableListActivity.getExpandableListView()获取了listView的句柄,并使用ExpandableListView.expandGroup (int groupPos)扩展了这些组。

对于您的方案,您可以跟踪哪些组被扩展,再次加载活动后,重新展开它们。

希望这有帮助。

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

答案 3 :(得分:2)

 @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 ...

为我工作。滚动没问题。

答案 4 :(得分:1)

straya提供的解决方案对Android 2.3.3不利。您的ExpandableListView将失去焦点,点击事件将在滚动列表后停止工作。

答案 5 :(得分:0)

我这样做了:

ExpandableAdpater adapter=new ExpandableAdapter(context);
expandableListView.setAdapter(adapter);

for (int i = 0; i < listResponse.size(); i++) {
                                expandableListView.expandGroup(i);
                            }