2010-08-29 8 views
7

Come si ottiene l'indice del primo/ultimo gruppo visibile in un ExpandableListView?Come si ottiene l'indice del primo/ultimo gruppo visibile in un ExpandableListView?

getFirstVisiblePosition() e getLastVisiblePosition() sono per lo più inutili per ExpandableListViews, perché restituiscono l'indice del primo/ultimo visibile cellule nell'elenco. Il che fa la differenza perché i gruppi espansi contano come più celle.

Quello che mi serve sono alcuni metodi come getFirstVisibleGroupIndex(), getLastVisibleGroupIndex() o qualche metodo per convertire il valore di "indice di cella visibile" dai metodi di cui sopra a un valore di indice gruppo reale (+ figlio).

Nota: OnScrollListener.onScroll (..., int firstVisibleItem, int visibleItemCount, ...) soffre dello stesso problema se il listener è impostato su ExpandableListView.

risposta

10

Stai cercando qualcosa di simile?

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

So che questa domanda è vecchio, ma per tutti coloro che inciampa su di essa come ho fatto io ... in base alla risposta di Sara questo è il metodo che sto usando ora:

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

Il lo stesso dovrebbe funzionare con getLastVisiblePosition() ...

Problemi correlati