2012-05-30 49 views
0

我们有一个ExpandableListView,其中包含大量的父项和子项。将顶级ExpandableListView置于列表顶部

当打开一个“父”时,我们会自动关闭先前打开的组,以便在任何一个顶部只打开一个组。 但是,我们希望该组出现在可见数据的当前顶部。 换句话说,“父母”应该是孩子追随的清单中第一个可见的人。

实际发生的是它正确地打开它,但它是随机定位的。在大多数情况下,顶部可见线实际上是其中一个子项,我们必须回滚到父项。

有什么方法可以强制显示视图顶部的内容。

+0

不是很清楚...你想在扩展列表顶部开放的父母,或你想组一行是打开时在屏幕顶部打开(它们*不是*相同的东西)。 – Barak

+0

我希望组行(组的“标题”)在打开时位于屏幕的顶部。目前它在屏幕的“上方”。 – theblitz

回答

5

所以,经过多次努力,我们成功地找到一个解决方案:

categoryListView.setOnGroupClickListener(new OnGroupClickListener() { 

     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, 
       int groupPosition, long id) { 

      categoryListView.setSelectionFromTop(groupPosition, 0); 
      Boolean shouldExpand = (!categoryListView.isGroupExpanded(groupPosition)); 
      categoryListView.collapseGroup(lastClickedPosition); 
      if (shouldExpand){ 
       categoryListView.expandGroup(groupPosition); 
      }     
      lastClickedPosition = groupPosition; 

      return true; 
     } 
    });