2012-08-28 105 views
1

我希望我的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在组展开时可见?

+0

您是否试过在super call之后调用smoothScrollToPosition? –

+0

是的,不起作用,因为在调用onGroupExpanded之前,默认的滚动不会发生。 – ab11

+0

尝试调用帖子或postDelayed内的滚动以确保滚动显示的时间晚于默认滚动。 –

回答

0

尝试调用post()postDelayed()中的滚动功能以确保滚动显示的时间晚于默认滚动功能。

+0

你是怎么做到这一点的? – ZakTaccardi