我用
SimpleExpandableListAdapter
在我的
中ExpandableListActivity
当用户单击组行时,子列表将展开并显示,当用户单击展开列表中的每个子项时,用户将导航到下一个second_Activity。目前,当用户单击后退按钮从second_Activity返回到ExpandableListActivity时,可扩展列表被初始化为未展开,我希望可扩展列表保持扩展状态,以便用户先前知道他选择了哪个项目。怎么做?应该覆盖ExpandableListActivity中的哪个方法?
PS:我知道我应该把getExpandableListView().expandGroup(groupPosition);
放在某个地方,但在哪里?我尝试将此代码放在onGroupClick()
和onChildClick()
中,但这没有用。
答案 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);
}