Android:自定义ExpandableListView的问题

时间:2012-08-28 15:49:48

标签: android

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

1 个答案:

答案 0 :(得分:0)

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