强制ExpandableListView的顶级位于列表顶部

时间:2012-05-30 13:41:25

标签: android expandablelistview

我们有一个包含大量父子条目的ExpandableListView。

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

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

是否有某种方法可以强制显示在视图中的顶行。

1 个答案:

答案 0 :(得分: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;
        }
    });