我正在构建一个可扩展的列表视图,我希望一次只扩展一个组。
目前我的列表视图中只有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;
}
});
但是,此代码似乎不起作用。当我点击第一组时,它会扩展。接下来,当我点击第二组时,第一组崩溃但第二组没有展开。 (它只会在随后的点击中扩展)
但如果我在这个时间点进行方向改变,第二组会扩大。
为什么会这样?
答案 0 :(得分:3)
没有开箱即用的东西,但你可以很容易地自己构建它。您需要添加侦听器以折叠先前打开的组:
expListView.setOnGroupExpandListener( new OnGroupExpandListener() {
int previousGroup = -1;
@Override public void onGroupExpand( int groupPosition ) {
if( groupPosition != previousGroup ) expListView.collapseGroup( previousGroup );
previousGroup = groupPosition;
}
} );
答案 1 :(得分:0)
试试这个(添加了两个parent.expandGroup()语句)
expListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
if (groupPosition==0) {
if(parent.isGroupExpanded(1))
parent.collapseGroup(1);
parent.expandGroup(0);
}
else if (groupPosition==1) {
if(parent.isGroupExpanded(0))
parent.collapseGroup(0);
parent.expandGroup(1);
}
parent.smoothScrollToPosition(groupPosition);
selectedGroupPosition = ""+groupPosition;
return false;
}
});