我希望我的 ExpandableListView 一次只允许扩展一个组。我找到了一个解决方案,它通过覆盖 ListViewAdapter 的 onGroupExpanded 方法来折叠先前展开的组:
@Override
public void onGroupExpanded(int groupPosition)
{
//collapse the old expanded group, if not the same
//as new group to expand
if(groupPosition != mLastExpandedGroup && mLastExpandedGroup != -1)
{
epView.collapseGroup(mLastExpandedGroup);
}
mLastExpandedGroup = groupPosition;
super.onGroupExpanded(groupPosition);
}
默认情况下,当展开新组时,ListView 会滚动,以便新组的 GroupView 保持可见。这种滚动不适用于我自定义的 ListView(通常新扩展组的 GroupView 最终会离开屏幕)。
基于android源,这不起作用的原因是因为扩展后滚动位置是在调用onGroupExpanded方法之前确定的,所以在我强制一个组折叠后位置不准确。
那么,对于自定义 ListView 的任何建议,它一次只允许扩展一个组,并正确滚动以便在组扩展时 GroupView 可见?