Reduzieren Sie alle Gruppen außer der ausgewählten Gruppe in erweiterbarer Listenansicht Android

Lesezeit: 3 Minuten

Benutzer-Avatar
Sathish

Ich entwickle eine Android-Anwendung mit erweiterbarer Listenansicht. Was ich eigentlich brauche, ist, dass ich eine Gruppe aufliste, die ein Kind enthält.

Wenn ich eine nicht erweiterbare Gruppe auswähle, sollte sie erweitert werden, nachdem ich zu diesem Zeitpunkt die zweite Gruppe ausgewählt habe, sollte die erste Gruppe reduziert werden. Ich habe Google, aber ich konnte nicht finden, was ich wollte. Bitte hilf mir.

Lassen Sie die aktuelle erweiterte Gruppenposition in einer Variablen speichern. Gehen Sie in onGroupExpanded wie folgt vor.

private int lastExpandedPosition = -1;
private ExpandableListView lv; //your expandable listview
...

lv.setOnGroupExpandListener(new OnGroupExpandListener() {

    @Override
    public void onGroupExpand(int groupPosition) {
            if (lastExpandedPosition != -1
                    && groupPosition != lastExpandedPosition) {
                lv.collapseGroup(lastExpandedPosition);
            }
            lastExpandedPosition = groupPosition;
    }
});

  • Hallo user936414, ich fühle mich gut, dass ich dir den 100. Reputationspunkt gebe. Danke für die Antwort.

    – Gundu Bandgar

    19. März 2016 um 11:27 Uhr


  • Wenn die ExpandableListView mehr als 2 Gruppen hat, werden nicht alle Gruppen geschlossen

    – HASSAN MD TAREQ

    7. April 2017 um 7:40 Uhr

  • @HassanTareq As expandableListView Wenn die Gruppen standardmäßig nicht geöffnet sind, erhalten Sie die gewünschte Arbeit, indem Sie die zuvor geöffnete Gruppe reduzieren.

    – Inzimam Tariq IT

    1. Februar 2018 um 6:34 Uhr

  • @user936414 Dadurch scrollt die expandablelstview zum Ende oder in die Mitte der erweiterten Gruppe. Irgendeine Lösungsmöglichkeit?

    – Sudhish Mohan

    4. April 2018 um 8:06 Uhr

  • Hallo, wie kann ich diesen obigen Code in einer benutzerdefinierten Listenansicht mit einer untergeordneten Gruppe als relatives Layout implementieren

    – Akshay

    11. Mai 2020 um 15:16 Uhr

Verwenden Sie diesen Code, das wird funktionieren

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

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

  • aber in diesem Fall geht der Fokus auf die aktuelle Gruppe verloren. Bitte helfen Sie mir dabei

    – Denny Sharma

    16. April 2014 um 12:21 Uhr

  • Diese Linie int previousItem = -1; muss außerhalb der Methode platziert werden. Oder previousItem wird jedes Mal zurückgesetzt (wobei diese spätere Anweisung verschwindet: previousItem = groupPosition;)

    – Phantômaxx

    31. Juli 2014 um 10:32 Uhr


  • Diese Methode hat einen Fehler. Es wird nicht zum Anfang der erweiterten Gruppe gescrollt, wie dies ohne den Aufruf collapseGroup der Fall wäre. Dies ist der Fall, wenn sich die erweiterte Gruppe UNTER der reduzierten Gruppe befindet. Die Ansicht scrollt zu der Stelle, an der sich die erweiterte Gruppe befinden würde, wenn die alte Gruppe nicht reduziert worden wäre. Irgendeine Idee, wie man es repariert?

    – Dunkler Reiter

    8. März 2017 um 22:23 Uhr

  • @Dark.Rider Ich habe das gleiche Problem. Hast du es geschafft, es zu reparieren?

    – Sudhish Mohan

    4. April 2018 um 9:41 Uhr


@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;
    }

  • Der Methodenname ist falsch geschrieben und es gibt kein Super-AFAICT.

    – LarsH

    6. Oktober 2018 um 18:36 Uhr

Wenn die ExpandableListView mehr als 2 Gruppen hat:

expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
    @Override
    public void onGroupExpand(int groupPosition) {
        for (int g = 0; g < expandableListAdapter.getGroupCount(); g++) {
            if (g != groupPosition) {
                expandableListView.collapseGroup(g);
            }
        }
    }
});    

Es wird alle Gruppen außer der angeklickten zuklappen.

Benutzer-Avatar
Micheil Zghenti

Erhalten ExpendableListView und dann die folgende Methode überschreiben – setOnGroupExpandListener

expandableListView = (ExpandableListView) findViewById(R.id.exp_listview);

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

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

Benutzer-Avatar
Sathish

Versuchen Sie, dies in Ihren ExpandableListAdapter einzufügen, listView ist ein Verweis auf die ExpandableListView selbst. Und lastExpandedGroupPosition ist eine ganzzahlige Mitgliedsvariable, die in Ihrem ExpandableListAdapter definiert ist.

 @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;
    }

Benutzer-Avatar
Fahim

   elstListView1.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
        @Override
        public void onGroupExpand(int groupPosition) {
            for(int i=0;i<listDataHeader.size();i++){
                if(i==groupPosition){
                    //do nothing}
                    else{
                        elstListView1.collapseGroup(i);
                    }
                }
            }
        });

1226400cookie-checkReduzieren Sie alle Gruppen außer der ausgewählten Gruppe in erweiterbarer Listenansicht Android

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy