Erweitern Sie alle untergeordneten Elemente in der erweiterbaren Listenansicht


74

Ich möchte alle untergeordneten Elemente erweitern, während die erweiterbare Listenansicht ausgefüllt ist. Derzeit sieht mein Code folgendermaßen aus:

ExpandableListView listView = (ExpandableListView) findViewById(R.id.view);
int count = viewAdapted.getGroupCount();
for (int position = 1; position <= count; position++)
    listView.expandGroup(position - 1);

Das ist ziemlich hässlich. Gibt es einen schöneren Weg, dies zu tun?



Anscheinend ist dies derzeit die einzige Lösung. Ich hoffe, es gibt ein Attribut oder ähnliches.
Drejc

Natürlich (Position <= Anzahl) ... Kopie nach Tippfehler kopieren
Drejc

@Drejc: Könntest du die richtige Antwort auswählen?
Justin

Es gab ... aber es wurde gelöscht
Drejc

Antworten:


76

Sie können es in getGroupView in Ihrem benutzerdefinierten Adapter erweitern:

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    View v = super.getGroupView(groupPosition, isExpanded, convertView, parent);
    ExpandableListView mExpandableListView = (ExpandableListView) parent;
    mExpandableListView.expandGroup(groupPosition);
    return v;
}

Glück!


12
das macht sie nicht klickbar
David Lawson

2
@ DavidLawson: Ja, meine Lösung ist fest - erweitern Sie sie. Wenn Sie sie erweitern möchten und sie anklickbar sind, müssen Sie damit umgehen, wo ExpandableListView erstellt wird, wie z. B. Drejcs Sollution.
Justin

36

Wenn Sie diesen Code in Ihren Adapter einfügen, bleibt die Erweiterungsliste geöffnet und die Schließfunktion wird deaktiviert.

ExpandableListView mExpandableListView = (ExpandableListView) parent;
mExpandableListView.expandGroup(groupPosition);

Dies mag ein wenig umgangen werden, funktioniert aber so, wie es sein sollte. Es öffnet alle Gruppen (zu Beginn) und kann jederzeit geschlossen werden

 for ( int i = 0; i < groupList.getCount(); i++ ) {
    groupList.expandGroup(i);
 } 

HINWEIS: Fügen Sie diesen Code nach dem Einstellen des Adapters in Ihre erweiterbare Ansicht ein. Andernfalls kann es zu Fehlern kommen. Ich hoffe es hilft.


6

Füllen Sie zuerst den Adapter und fügen Sie diesen Code in Ihre oncreate-Methode ein

   int count = adapter.getGroupCount();
                for ( int i = 0; i < count; i++ ) 
                    listView.expandGroup(i);

6

Alle Gruppen erweitern

for(int i=0; i < myAdapter.getGroupCount(); i++)
    myExpandableListView.expandGroup(i);

wenn Sie sie nicht zusammenlegbar machen möchten.

myExpandableListView.setOnGroupClickListener(new OnGroupClickListener() {
  @Override
  public boolean onGroupClick(ExpandableListView parent, View v,int  groupPosition, long id) { 
    return true; 
  }
});

0

Ich habe die aufgelisteten Antworten ausprobiert, aber festgestellt, dass ich die Methode getGroupCount () verwenden kann, um die Anzahl der Gruppen abzurufen .

Mit dieser Methode kann ich jede Gruppe von mir iterieren und erweitern ExpandableListView

for (int i = 0; i < myExpandableListView.getExpandableListAdapter().getGroupCount(); i++) {
      //Expand group
      myExpandableListView.expandGroup(i);
 }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.