Vraag Programmeer een groep formeel in ExpandableListView


Wanneer ik een nieuwe groep uitbreid, kan ik de laatste groep samenvouwen die is uitgebreid?


55
2017-11-30 14:29


oorsprong


antwoorden:


Probeer dit in uw te plaatsen ExpandableListAdapter, listView is een verwijzing naar de ExpandableListView zelf. En lastExpandedGroupPosition is een integer-lidvariabele die is gedefinieerd in uw ExpandableListAdapter.

    @Override
    public void onGroupExpanded(int groupPosition){
        //collapse the old expanded group, if not the same
        //as new group to expand
        if(groupPosition != lastExpandedGroupPosition){
            listView.collapseGroup(lastExpandedGroupPosition);
        }

        super.onGroupExpanded(groupPosition);           
        lastExpandedGroupPosition = groupPosition;
    }

119
2017-11-30 15:06



Zeer nuttig, maar als Anh Tuan vermeldt in de opmerkingen hierboven, had ik problemen met de ExpandableListView en scrollde toen niet terug naar de top van de momenteel geselecteerde groep (hij zou op de huidige gescrollde positie blijven staan, ergens in het midden van de groep). U moet ook een onGroupClickListener () toevoegen om naar de juiste positie te scrollen:

@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition,
        long id) {
    // Implement this method to scroll to the correct position as this doesn't
    // happen automatically if we override onGroupExpand() as above
    parent.smoothScrollToPosition(groupPosition);

    // Need default behaviour here otherwise group does not get expanded/collapsed
    // on click
    if (parent.isGroupExpanded(groupPosition)) {
        parent.collapseGroup(groupPosition);
    } else {
        parent.expandGroup(groupPosition);
    }

    return true;
}

20
2017-11-09 09:55



Deze werkte voor mij

expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
    int previousItem = -1;

    @Override
    public void onGroupExpand(int groupPosition) {
        if(groupPosition != previousItem )
            expandableList.collapseGroup(previousItem );
        previousItem = groupPosition;
    }
});

17
2017-07-11 06:39



Doe dit om de aangeklikte groep uit te vouwen en alle andere samen te vouwen

public void onGroupExpand(int groupPosition)
{
    for (int i = 0; i < len; i++)
    {
        if (i != groupPosition)
        {
            expandableListDetailsLevel.collapseGroup(i);
        }
    }
}

Het werkt voor mij.


4
2017-10-22 09:48



    @Override
    public void onGroupExpanded(int groupPosition) {
        for(int i=0;i<mGroupCollection.size();i++){
            if(i==groupPosition){
                System.out.println("Nothing");
                         }
            else{
                   mExpandableListView.collapseGroup(i);
            }

        }
        super.onGroupExpanded(groupPosition);
    }

2
2017-12-17 13:58