2010-08-29 47 views
7

如何獲取ExpandableListView中第一個/最後一個可見組的索引?如何獲取ExpandableListView中第一個/最後一個可見組的索引?

對於ExpandableListViews,getFirstVisiblePosition()和getLastVisiblePosition()通常是無用的,因爲它們返回列表中第一個/最後一個可見的單元格的索引。這是有所作爲的,因爲擴展組計爲多個單元格。

我需要的是像getFirstVisibleGroupIndex(),getLastVisibleGroupIndex()或某些方法來將上述方法中的「可見單元索引」值轉換爲真實組(+子)索引值。

注意:如果偵聽器在ExpandableListView上設置,則OnScrollListener.onScroll(...,int firstVisibleItem,int visibleItemCount,...)會遭遇同樣的問題。

回答

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++; 

    } 
} 
3

我知道這個問題是舊的,但大家誰絆倒它,因爲我沒有... 基於Sara的答案,這是我現在使用的方法:

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

的同樣應該使用getLastVisiblePosition()...

相關問題