1

我希望我的 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 可见?

4

1 回答 1

0

尝试在 a 中调用滚动函数,post()postDelayed()确保滚动显示晚于默认滚动。

于 2012-08-28T17:18:06.957 回答