Array erweitern

  • Antworten:5
Mickey
  • Forum-Beiträge: 5

28.02.2013, 16:54:46 via Website

Hallo,

ich versuche einen dynamischen Array zu erzeugen indem ich, abhängig von den Preferences,
bestimmte Listeneinträge hinzufüge oder entferne.

So habe ich es probiert:
1String[] choices = new String[] {"Text1", "Text2"};
2ArrayList<String> auswahlListe = new ArrayList<String>();
3auswahlListe.addAll( Arrays.asList(choices) );
4
5if(prefs.getBoolean("checkbox_1", true)){
6auswahlListe.add("Text3");
7}
aber in meiner ListView erscheinen nur "Text1" und "Text2".

Hat jemand eine Idee, wieso der Eintrag "Text3" dort nicht erscheint?

Dankeschön!!

Antworten
Wolfgang S.
  • Forum-Beiträge: 32

28.02.2013, 17:12:19 via Website

Hallo,
es gibt keine dynamischen Arrays - bei deinem Code hast du zwei getrennte Container erzeugt (das Array mit zwei Elementen und die ArrayList mit drei Elementen).

Dynamisch hinzufügen kannst du Elemente bei der ArrayList. Füge doch dort deine Elemente hinzu und rufe die Methode toArray() von der ArrayList auf, wenn du wirklich ein Array benötigst.

Mickey

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.02.2013, 17:52:52 via Website

Füge einfach alles in die Liste, dh "Text1" und "Text2" mit list.add hinzufügen.
Etwa so:
1//String[] choices = new String[] {"Text1", "Text2"}; Das erzeugt ein eigenes Array
2ArrayList<String> auswahlListe = new ArrayList<String>();
3auswahlListe.add("Text1");
4auswahlListe.add("Text2");
5
6if(prefs.getBoolean("checkbox_1", true)){
7auswahlListe.add("Text3");
8}
9String [] choises= auswahlListe.toArray(new String[list.size()]);
Habe den Code nicht getestet, denke aber das er funktionieren sollte.

LG Pascal //It's not a bug, it's a feature. :) ;)

Mickey

Antworten
Mickey
  • Forum-Beiträge: 5

01.03.2013, 00:03:55 via Website

Vielen Dank für die Antworten!!

Pascal, dein Code ist soweit super bis auf die letzte Zeile.
Anstatt: String [] choises= auswahlListe.toArray(new String[list.size()]);
Soll: String [] choises= auswahlListe.toArray(new String[auswahlListe.size()]); sein und es funzt.

Dankeschön!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.03.2013, 06:02:55 via App

Ich hatte vergessen die Variable zu ändern. :-)

LG Pascal //It's not a bug, it's a feature. :) ;)

Mickey

Antworten
Timo D.
  • Forum-Beiträge: 182

02.03.2013, 19:23:06 via Website

Die Lösung mit der ArrayListe ist aus meiner Sicht das einfachste. Du kannst es mit jedem Datentyp machen. Du kannst natürlich auch ein Array erstellen. Ein temporäreres Array erzeugen und dort die Einträge vom ersten Array eintragen. Dann das Array vergrößern und die Werte vom temporären Array zurück in das vergrößerte Array kopieren. Und neue Werte ergänzen. Dynamische Arrays gibt es nun mal nicht. Rein theoretisch könntest du auch eine ArrayIndexOutOfBounds Exception abfangen und dort dann eine Erweiterung des Arrays vornehmen.

Aber ich empfehle Pascals Lösung.

— geändert am 02.03.2013, 19:23:23

Sichern Sie Ihr Smartphone gegen Diebstahl und erhöhen Sie die Chance, es wiederzufinden. Jetzt neu: Guardian - Anti-Diebstahl Guardian - Anti-Diebstahl Pro https://play.google.com/store/apps/details?id=de.tapps.guardian.pro Guardian - Anti-Diebstahl Trial https://play.google.com/store/apps/details?id=de.tapps.guardian.free

Mickey

Antworten