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?

Drejc
quelle
Vielleicht können Sie dies sehen: stackoverflow.com/questions/6849013/expandable-listview
david55
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!

Justin
quelle
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.

ralphgabb
quelle
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);
Jatin Devani
quelle
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; 
  }
});
VJ Vishal Jogiya
quelle
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);
 }
Jorgesys
quelle