如何获取ExpandableListView中第一个/最后一个可见组的索引?
问题描述:
如何获取ExpandableListView中第一个/最后一个可见组的索引?如何获取ExpandableListView中第一个/最后一个可见组的索引?
对于ExpandableListViews,getFirstVisiblePosition()和getLastVisiblePosition()通常是无用的,因为它们返回列表中第一个/最后一个可见的单元格的索引。这是有所作为的,因为扩展组计为多个单元格。
我需要的是像getFirstVisibleGroupIndex(),getLastVisibleGroupIndex()或某些方法来将上述方法中的“可见单元索引”值转换为真实组(+子)索引值。
注意:如果侦听器在ExpandableListView上设置,则OnScrollListener.onScroll(...,int firstVisibleItem,int visibleItemCount,...)会遭遇同样的问题。
答
你在找这样的吗?
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++;
}
}
答
我知道这个问题是旧的,但大家谁绊倒它,因为我没有... 基于Sara的答案,这是我现在使用的方法:
public int getFirstVisibleGroup() {
int firstVis = list.getFirstVisiblePosition();
long packedPosition = list.getExpandableListPosition(firstVis);
int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition);
return groupPosition;
}
的同样应该使用getLastVisiblePosition()...