listview Duplizierung des Inhalts

  • 3 Antworten
  • Letztes Antwortdatum
C

coolz3ro

Neues Mitglied
0
Hallo!

Ich habe eine Custom listView erstellt und nun folgendes Problem:
Wenn ich den Bildschirm drehe oder aus der Activity raus gehe und wieder rein, dann verdoppelt sich der Inhalt aus dieser listView. (Bei 2maligem Drehen habe ich dann entsprechend den dreifachen Inhalt, bei 3maligem Drehen den vierfachen Inhalt.) Woran kann das liegen und wie lässt sich das Problem am besten beheben?

Teile des Quellcodes:

Code:
public class kapitel1 extends ListActivity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.kapitel1);
        
        SimpleAdapter adapter = new SimpleAdapter(
                this,
                list,
                R.layout.custom_row_view,
                new String[] {"m1","m2","Status"},
                new int[] {R.id.text1,R.id.text2, R.id.text3}
                );
        populateList();
        setListAdapter(adapter);
    }
    
    static final ArrayList<HashMap<String,String>> list = 
            new ArrayList<HashMap<String,String>>(); 

        private void populateList() {
            HashMap<String,String> temp = new HashMap<String,String>();
            temp.put("m1","...");
            temp.put("m2", "...");
            temp.put("Status", "Status: 0/10");
            list.add(temp);
            HashMap<String,String> temp1 = new HashMap<String,String>();
            temp1.put("m1","...");
            temp1.put("m2", "...");
            temp1.put("Status", "...");
            list.add(temp1);
            HashMap<String,String> temp2 = new HashMap<String,String>();
            temp2.put("m1","...");
            temp2.put("m2", "...");
            temp2.put("Status", "...");
            list.add(temp2);
        }
 
Beim Drehen wird onCreate wieder aufgerufen. Da du deine Liste static final gemacht hast, ist sie noch vorhanden beim 2. Aufruf. Und da du immer nur .add auf die Liste machst, nie aber ein .clear, wird sie halt immer weiter gefüllt ...
 
  • Danke
Reaktionen: coolz3ro
Okay, das heißt ich haue einfach "Static final" aus dem Code raus und dann sollte es funktionieren. Leider hat das ja nun auch seinen Sinn, dass die list "static final" definiert ist. Meinst du es ist schlimm, wenn ich darauf verzichte oder sollte ich es lieber mit der anderen Variante ".clear" versuchen?

//Habe mich jetzt doch für die list.clear(); -Variante entschieden, weil mir das sinnvoller erscheint. Vielen Dank Tom =)
 
Zuletzt bearbeitet:
denk mal nach.

wenn du eine stelle hast wo du alle listenelemente hinzufügst, wo könnte es gut sein, dass du eine leere liste hast ?
 
  • Danke
Reaktionen: Madlip
Zurück
Oben Unten