Eigenes Objekt wird nicht in ArrayList hinzugefügt, stattdesses werden alle Objekte überschrieben.

  • Antworten:5
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 605

04.01.2016, 18:02:00 via Website

Hallo Leute,

ich habe mal wieder ein Problem, ich versuche nun seit gestern den Fehler festzustellen, finde ihn aber nicht. Ich weiß nur, wo er sich ungefähr befinden muss. Aber nun zum Thema.

Für meine App habe ich ein eigenes Objekt mit dem Namen "Player" erstellt. Wenn ich nun eine ArrayList mit diesem Objekt befülle, wird das Objekt nicht hinzugefügt. Stattdessen wird ein Objekt hinzugefügt, und alle vorhandenen mit dem neuen überschrieben. Also:

ArrayList leer -> Player wird in ArrayList gespeichert
ArrayList enthält bereits einen Player -> ArrayList enthält nun zwei mal die neuste Player Instanz
usw.

Hier nun mein entsprechender Code:

Player.java (Objekt)

    public Player(String n, int m, int t){
        name = n;
        money = m;
        tip = t;
    }

    public String getName(){
        return this.name;
    }

    public int getMoney(){
        return this.money;
    }

    public int getTip(){
        return this.tip;
    }

    public String toString(){
        return this.name + "\n Tipp: " + this.tip + " | Einsatz: " + this.getMoney() + " ,- €";
    }

}

Befüllen der ArrayList

public void addPlayertoEvent(String name, int money, int tip){
        Player p = new Player(name, money, tip);

        playerList.add(p);

        playerListString.add(p.toString());

        lvPlayers.setAdapter(null);

        ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(AddEventActivity.this, R.layout.list_items, playerListString);
        lvPlayers.setVisibility(View.VISIBLE);
        lvPlayers.setAdapter(playerAdapter);

        etTip.setText("");
        etName.setText("");

        for(int i = 0; i < playerList.size(); ++i) {
            Log.e("AL", "" + playerList.get(i).getName() + " " + playerList.get(i).getMoney() + " " + playerList.get(i).getTip());
        }

    }

Der Fehler kann sich, nach meiner Überprüfung nur in den beiden Bereichen befinden.
Wahrscheinlich handelt es sich um einen Logik-Fehler meinerseits.

Sieht jemand etwas auf Anhieb?

Euer Henrik

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.166

04.01.2016, 20:31:28 via Website

Ohne Code anschauen, hätte ich gesagt, es ist ein Pointer Fehler.
'Da ich mir dann aber doch den Code angeschaut habe, zeigt sich, das dies nicht der Fall sein kann, da du ja deine Player Instanz neu erzeugst.
Hast du denn mal mehere Testaufrufe gemacht und die Methode addPlayertoEventeinfach mal mit den unterschiedlichsten Parametern ausgeführt?

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

Antworten
  • Forum-Beiträge: 605

05.01.2016, 14:34:00 via Website

Hallo Pascal,

ich finde es toll, dass du immer zur Stelle bist, wenn jemand fragt. Dafür Daumen hoch.

Verschiedene Parameter zu übergeben hatte ich auch schon probiert, daran liegt es nicht.

Inzwischen habe ich eine Antwort auf StackOverflow erhalten, und lag mit meiner Vermutung, dass es sich um einen ganz simplen Fehler handelt sehr richtig. Ich hatte die Variablen meines Player-Objektes als static deklariert, das war der einzige fehler.

Jetzt läuft es.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.166

05.01.2016, 14:44:32 via App

Gut, den Fehler hatte ich dir auch sagen können, nur war das hier nicht im Code mit drin ;)

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

Antworten
  • Forum-Beiträge: 605

05.01.2016, 14:45:18 via Website

Ja das stimmt, warum ich das hier nicht mir rein kopiert habe, weiß ich auch nicht :D Flüchtigkeit ;)

Sag mal, gibt es hier eine Rubrik, wo man App / Games welche sich in der Programmierung befinden vorstellen kann?
Fände ich sowohl interessant zu lesen, als auch mich daran zu beteiligen.

— geändert am 05.01.2016, 14:46:09

Antworten

Empfohlene Artikel