1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

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

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von pyretta, 08.03.2012.

  1. pyretta, 08.03.2012 #1
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    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
     
  2. the_alien, 08.03.2012 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Ganz einfach: So funktionieren Arrays nicht...
    Willst du mit add und remove arbeiten, dann nimm eine ArrayList.
     
    pyretta bedankt sich.
  3. pyretta, 08.03.2012 #3
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    oh :biggrin:
    Ja hast recht, das geht wunderbar!
    Vielen Dank.
     
  4. Fr4gg0r, 08.03.2012 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    oO
    Sofern die Arrays nicht dynamisch wachsen sollen, verwende int[].
    ArrayList<Integer> haut da ansonsten n schönen batzen overhead drauf.
     
  5. pyretta, 08.03.2012 #5
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    95
    Erhaltene Danke:
    1
    Registriert seit:
    24.01.2011
    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"?
     
  6. DieGoldeneMitte, 09.03.2012 #6
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    "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
     
    pyretta bedankt sich.

Diese Seite empfehlen