ExpandableListView richtig fuellen

  • 4 Antworten
  • Letztes Antwortdatum
L

Lucius1972

Neues Mitglied
0
Guten Morgen und ein frohes Neues fuer euch alle.

Ich habe eine ExpandableListView die Ich fuelle mit untengenannte Daten durch eine
SetStandardGroups Funktion. Ich moechte es hinbekommen das die Liste wie volgt gefuellt wird aber es klappt nicht so wie Ich das gerne haette.

Danke im voraus.

Gruppe A
Brazil : Value1
Mexico : Value2
Croatia : Value3

Gruppe B
Cameroon : Value4
Netherlands : Value5

Gruppe C
Chile: Value6
Spain: Value7

Gruppe D
Australia: Value8

Gruppe E
Colombia : Value9


Code:
public ArrayList<Group> SetStandardGroups() {

        String group_names[] = { "Gruppe A", "Gruppe B", "Gruppe C",
                "Gruppe D", "Gruppe E" };

        String country_names[] = { "Brazil", "Mexico", "Croatia", "Cameroon",
                "Netherlands", "Chile", "Spain", "Australia", "Colombia" };

        String country_values[] = { "Value1", "Value2", "Value3", "Value4",
                "Value5", "Value6", "Value7", "Value8", "Value9" };


        ArrayList<Group> list = new ArrayList<Group>();

        ArrayList<Child> ch_list;

        int size = 5;
        int j = 0;

        for (String group_name : group_names) {
            Group gru = new Group();
            gru.setName(group_name);

            ch_list = new ArrayList<Child>();
            for (; j < size; j++) {
                Child ch = new Child();
                ch.setName(country_names[j]);
                ch.setValue(country_values[j]);
                ch_list.add(ch);
            }
            gru.setItems(ch_list);
            list.add(gru);

            size = size + 1;
        }

        return list;
    }
 
Hast du es mal mit einem Adapter probiert?
 
Jaiel schrieb:
Hast du es mal mit einem Adapter probiert?
Hi Jaiel, dies ist um eine ExpandableListview zu fuellen :)
Ich habe es aber schon hingekriegt, nicht der beste Weg aber es klappt.
Trotsdem Danke.
 
Achso ok sorry.

So hier:

Das sollte so passen mit einem kleinen Trick und einer magicNumber ;)

PHP:
public ArrayList<Group> SetStandardGroups() {

        String group_names[] = { "Gruppe A", "Gruppe B", "Gruppe C",
                "Gruppe D", "Gruppe E" };

        String country_names[] = { "Brazil", "Mexico", "Croatia", "Cameroon",
                "Netherlands", "Chile", "Spain", "Australia", "Colombia" };

        String country_values[] = { "Value1", "Value2", "Value3", "Value4",
                "Value5", "Value6", "Value7", "Value8", "Value9" };


        ArrayList<Group> list = new ArrayList<Group>();

        ArrayList<Child> ch_list;

        int magicNumber = 6;
        int j=0;

        for (String group_name : group_names) {
            Group gru = new Group();
            gru.setName(group_name);

            ch_list = new ArrayList<Child>();
            for (int i=0; i<magicNumber/2; i++) {
                Child ch = new Child();
                ch.setName(country_names[j]);
                ch.setValue(country_values[j++]);
                ch_list.add(ch);
            }
            gru.setItems(ch_list);
            list.add(gru);

            magicNumber--;

        }

        return list;
    }

damit erreichst du genau das was du willst ohne viel Veränderung:

Sehr speziell muss ich sagen aber ok. Durch das implizite Casten von magicNumber/2 hast du folgende Druchlaufszahlen in der verschachtelten For-Schleife: 3,2,2,1,1 genau wie du es dir wünscht ;)
 
Zuletzt bearbeitet:
Jaiel schrieb:
Achso ok sorry.

So hier:

Das sollte so passen mit einem kleinen Trick und einer magicNumber ;)

PHP:
public ArrayList<Group> SetStandardGroups() {

        String group_names[] = { "Gruppe A", "Gruppe B", "Gruppe C",
                "Gruppe D", "Gruppe E" };

        String country_names[] = { "Brazil", "Mexico", "Croatia", "Cameroon",
                "Netherlands", "Chile", "Spain", "Australia", "Colombia" };

        String country_values[] = { "Value1", "Value2", "Value3", "Value4",
                "Value5", "Value6", "Value7", "Value8", "Value9" };


        ArrayList<Group> list = new ArrayList<Group>();

        ArrayList<Child> ch_list;

        int magicNumber = 6;
        int j=0;

        for (String group_name : group_names) {
            Group gru = new Group();
            gru.setName(group_name);

            ch_list = new ArrayList<Child>();
            for (int i=0; i<magicNumber/2; i++) {
                Child ch = new Child();
                ch.setName(country_names[j]);
                ch.setValue(country_values[j++]);
                ch_list.add(ch);
            }
            gru.setItems(ch_list);
            list.add(gru);

            magicNumber--;

        }

        return list;
    }

damit erreichst du genau das was du willst ohne viel Veränderung:

Sehr speziell muss ich sagen aber ok. Durch das implizite Casten von magicNumber/2 hast du folgende Druchlaufszahlen in der verschachtelten For-Schleife: 3,2,2,1,1 genau wie du es dir wünscht ;)
Hallo Jaiel, vielen Dank so gehts auch. Ich hatte folgende Loesung:

Code:
        ArrayList<Group> list = new ArrayList<Group>();

        ArrayList<Child> ch_list;

        int group_sizes[] = {3, 2, 2, 1, 1}; // An array of sizes for each of your group
        int size = 0, i = -1, j = 0;

        for (String group_name : group_names) {

            i++;
            size = size + group_sizes[i];

            Group gru = new Group();
            gru.setName(group_name);

            ch_list = new ArrayList<Child>();
            for (; j < size; j++) {

                Child ch = new Child();
                ch.setName(country_names[j]);
                ch.setValue(country_values[j]);
                ch_list.add(ch);

            }
            gru.setItems(ch_list);
            list.add(gru);
        }
return list;
 
Zuletzt bearbeitet:
Zurück
Oben Unten