如何在ExpandableListView中获取第一个/最后一个可见组的索引?

时间:2010-08-29 08:30:59

标签: android

如何在ExpandableListView中获取第一个/最后一个可见组的索引?

getFirstVisiblePosition()和getLastVisiblePosition()对于ExpandableListViews来说几乎没用,因为它们返回列表中第一个/最后一个可见单元格的索引。这有所不同,因为扩展组计为多个单元格。

我需要的是getFirstVisibleGroupIndex(),getLastVisibleGroupIndex()等一些方法,或者将上述方法中的“visible cell index”值转换为实际组(+ child)索引值的方法。

注意:如果在ExpandableListView上设置了侦听器,则OnScrollListener.onScroll(...,int firstVisibleItem,int visibleItemCount,...)会遇到同样的问题。

2 个答案:

答案 0 :(得分:10)

你在找这样的东西吗?

public void listVisibleRowsForExpandableGroup()
{
    int firstVis  = getFirstVisiblePosition();
    int lastVis = getLastVisiblePosition();

    int count = firstVis;

    while (count <= lastVis)
    {
        long longposition = getExpandableListPosition(count);
        int type = getPackedPositionType(longposition);
        if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
            int groupPosition = getPackedPositionGroup(longposition);
            int childPosition = getPackedPositionChild(longposition);
            Log.d("Test","group: " + groupPosition + " and child: " + childPosition );
        }
        count++;

    }
}

答案 1 :(得分:3)

我知道这个问题已经过时了,但对于每个偶然发现它的人来说...... 根据sara的回答,这是我现在使用的方法:

    public int getFirstVisibleGroup() {
            int firstVis = list.getFirstVisiblePosition();
        long packedPosition = list.getExpandableListPosition(firstVis);
        int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition);
        return groupPosition;
}

同样适用于getLastVisiblePosition()...