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.