
Originariamente inviata da
Nikopol
Ciao,
dopo la prima stampa imposti i valori a zero e stringa vuota:
codice:
simuBuffer[position].setType("");
simuBuffer[position].setValue("");
simuBuffer[position].setTimestamp(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.
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
codice:
listaMisu.add(position, simuBuffer[position].clone());
2) crei semplicemente un nuovo oggetto con gli stessi valori e lo aggiungi alla lista:
codice:
listaMisu.add(position, new Misurazione(simuBuffer[position].getType(), simuBuffer[position].getValue(), simuBuffer[position].getTimestamp()));
Tieni presente che il clone non è la scelta più raccomandata quindi ti consiglio di usare il secondo modo.
Inoltre se vuoi svuotare il buffer devi assegnare null all'elemento dell'array che vuoi eliminare
codice:
simuBuffer[position] = null
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:
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());
}
}
e nella lista li inserisci cosi:
codice:
listaMisu.add(position, new Misurazione(simuBuffer[position]));