Ciao,
dopo la prima stampa imposti i valori a zero e stringa vuota:il secondo stampa solo due stringhe vuote e 0
Questo perchè nella lista non aggiungi un nuovo oggetto ma semplicemente gli passi il reference dell'oggetto nel buffer; quindi modificando il buffer modifichi anche la lista.codice:simuBuffer[position].setType(""); simuBuffer[position].setValue(""); simuBuffer[position].setTimestamp(0);
Se ti serve poter modificare il buffer senza ripercussioni sulla lista allora puoi procedere in 2 modi:
1) sovrascrivi il metodo clone() che restituisce un clone dell'oggetto (ogni oggetto lo eredita da object), e alla lista gli passi
2) crei semplicemente un nuovo oggetto con gli stessi valori e lo aggiungi alla lista:codice:listaMisu.add(position, simuBuffer[position].clone());
Tieni presente che il clone non è la scelta più raccomandata quindi ti consiglio di usare il secondo modo.codice:listaMisu.add(position, new Misurazione(simuBuffer[position].getType(), simuBuffer[position].getValue(), simuBuffer[position].getTimestamp()));
Inoltre se vuoi svuotare il buffer devi assegnare null all'elemento dell'array che vuoi eliminare
EDIT. Per semplificare il secondo metodo potresti aggiungere un nuovo costruttore che prende un oggetto della sua stessa classe e restituisce una nuova istanza:codice:simuBuffer[position] = null
e nella lista li inserisci cosi:codice:public class Misurazione{ ... //costruttore standard public Misurazione(int type, int value, int timestamp){ // assegnazioni } //costruttore per la copia public Misurazione(Misurazione m){ this(m.getType(), m.getValue(), m.getTimestamp()); } }
codice:listaMisu.add(position, new Misurazione(simuBuffer[position]));

Rispondi quotando