simoorusso ha scritto:
Se creassi un array che contiene boolean, cioè se la variabile selected diventasse un array di boolean? Sarebbe una soluzione accettabile?
Tecnicamente sì, funzionerebbe. Sia come array:
private ArrayList<Prodotto> listaprodotti;
private boolean[] selected;
o magari meglio come lista
private ArrayList<Prodotto> listaprodotti;
private ArrayList<Boolean> selected;
Ripeto,
tecnicamente funzionerebbe, come ho detto ma .... il punto è un altro: sarebbe abbastanza "brutto" e poco object oriented. Dovresti gestire 2 sequenze separate e tenerle sempre allineate.
C'è una soluzione migliore. Crei una classe interna (nested class) privata nel table model, es. Elemento (nessuno dall'esterno ne saprebbe qualcosa) che "unisce" un prodotto e il suo flag.
public class ListaProdottiTableModel extends AbstractTableModel {
private ArrayList<Elemento> listaprodotti;
// .....
private static class Elemento {
private Prodotto prodotto;
private boolean selected;
// ... getter/setter
}
}
Devi ovviamente cambiare alcune cose (es. nel costruttore non basta più
this.listaprodotti = listaprodotti; ) ma è relativamente poco (se sei arrivato fin qui, NON dovresti avere problemi/dubbi a riguardo) e se in futuro dovessi aggiungere qualcosa al Elemento, è abbastanza facile.
Poi nel table model puoi anche aggiungere, per te che usi direttamente questo tuo table model, un metodo es.
public List<Prodotto> getProdottiSelezionati()
tutto lì ...