我希望我的ExpandableListView只允许一次扩展一个组。我发现了一个解决方案,通过重写行这ListViewAdapter的onGroupExpanded到方法崩溃之前展开的组:Android:自定义问题ExpandableListView
@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在组展开时可见?
您是否试过在super call之后调用smoothScrollToPosition? –
是的,不起作用,因为在调用onGroupExpanded之前,默认的滚动不会发生。 – ab11
尝试调用帖子或postDelayed内的滚动以确保滚动显示的时间晚于默认滚动。 –