【发布时间】:2014-05-23 14:56:18
【问题描述】:
我正在构建一个可扩展的列表视图,我希望一次只扩展一个组。
目前我的列表视图中只有 2 个组。当用户点击一个组时,另一个应该折叠,反之亦然。此外,在方向更改期间应保持相同。
活动类:
private String selectedGroupPosition = null;
方向改变:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
initUI();
}
initUI():
if(selectedGroupPosition!=null) {
expListView.expandGroup(Integer.parseInt(selectedGroupPosition));
}
........
expListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
parent.smoothScrollToPosition(groupPosition);
if (groupPosition==0) {
if(parent.isGroupExpanded(1))
parent.collapseGroup(1);
}
else if (groupPosition==1) {
if(parent.isGroupExpanded(0))
parent.collapseGroup(0);
}
selectedGroupPosition = ""+groupPosition;
return false;
}
});
但是,此代码似乎不起作用。当我点击第一组时,它会展开。接下来,当我单击第二组时,第一组折叠但第二组不展开。 (它只会在随后的点击中展开)
但如果我此时改变方向,第二组会展开。
为什么会这样?
【问题讨论】:
-
有点不相干,ExpandableListView.expandGroup()的参数是int,但是为什么selectedGroupPosition是String呢?
-
试试这个 SO 答案 [stackoverflow.com/a/4315162/2083078].这是一个非常简单优雅的解决方案。
标签: android android-listview expandablelistview android-orientation expandablelistadapter