cannot invoke add(Integer) on the array [Integer]??

P

pyretta

Ambitioniertes Mitglied
1
Hallo,

habe grade ein Verständnisproblem.
Ich habe 2 arrays und möchte bei einem onItemClick-Event
1) ein Bild zu array_1 hinzufügen
und 2) das gleiche Bild aus array_2 entfernen

Das klappt aber irgendwie so gar nich...

Hier mal mein Code

Code:
final  Integer[] array_1 = null;      
[I]//habe auch versucht zu schreiben: "final  Integer[] array_1 = {};" ging aber auch nicht
[/I]
final Integer[] array_2 = {
                R.drawable.bild1,
                R.drawable.bild2,
                R.drawable.bild3,
                R.drawable.bild4           
        };

public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
           if (arg2 == 0) {

               Integer bild1 = new Integer(R.drawable.bild1);

               array_1.add(bild1); [I]//Geht nicht. Fehlermeldung: cannot invoke add(Integer) on the array [Integer][/I]
               array_2.remove(R.drawable.bild1); [I]//Geht auch nicht. Fehlermeldung: cannot invoke add(int) on the array [Integer][/I]
           }
   .......
}


Was mach ich falsch? :sad:

Hab schon den netten Herrn Google gelöchert zu dem Problem, habe aber nichts gefunden das mir hilfreich erschien.

Könnt Ihr mir weiterhelfen?
Danke schon mal im Voraus.

Liebe grüße,
pyretta
 
Ganz einfach: So funktionieren Arrays nicht...
Willst du mit add und remove arbeiten, dann nimm eine ArrayList.
 
  • Danke
Reaktionen: pyretta
oh :biggrin:
Ja hast recht, das geht wunderbar!
Vielen Dank.
 
oO
Sofern die Arrays nicht dynamisch wachsen sollen, verwende int[].
ArrayList<Integer> haut da ansonsten n schönen batzen overhead drauf.
 
Hallo Fr4gg0r,

danke für deine Antwort.
Doch, das soll schon dynamisch befüllt werden.

Der User kann aus einer Vielzahl von Bildern auswählen die ihm dann später mit Zusatzinformationen aufgelistet werden sollen.

Was meinst du denn mit "overhead"?
 
"overhead" heißt "verborgene Rechenkosten", und faggor meint :

  • dass ein "Integer" ein echtes Objekt ist, während "int" ein primitiver Datentyp ist, mit dem die java VM effizienter umgehen kann als mit fetteren Objekten.
  • und eine ArrayList<Integer> auch wieder ein Objekt, das um ein simpleres Array wie int[] bzw. Integer[] code drumherumpackt (ja, Arrays sind auch Objekte, ich weiss :D)
Manchmal ist der Overhead natürlich nötig und erwünscht :D
 
  • Danke
Reaktionen: pyretta

Ähnliche Themen

R
Antworten
6
Aufrufe
1.016
swa00
swa00
Horstmann365
Antworten
1
Aufrufe
1.060
jogimuc
J
T
  • Gesperrt
  • trini
Antworten
5
Aufrufe
819
swa00
swa00
Zurück
Oben Unten