1. pyretta, 08.03.2012 #1
    pyretta

    pyretta Threadstarter Android-Hilfe.de Mitglied

    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

    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

    oh :biggrin:
    Ja hast recht, das geht wunderbar!
    Vielen Dank.
     
  4. Fr4gg0r, 08.03.2012 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    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

    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

    "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.