Come utilizzare correttamente le classi JavaFX TableView e ObservableList?
Ho una classe in cui ricevo una struttura di raccolta:
public class YIFY {
private static List<Pelicula> resultados;
public static void setResultados(List<Pelicula> resultados) {
YIFY.resultados = resultados;
}
}
Successivamente, in un'altra classe I associa il contenuto di tale List
a un TableView
. Tuttavia creo un FXCollections.observableArrayList()
che è impostato come elemento di bind alla tabella.
Ecco come lo faccio:
peliculas = FXCollections.observableArrayList(YIFY.getResultados());
tituloColumn.setCellValueFactory(new PropertyValueFactory<>("titulo"));
calidadColumn.setCellValueFactory(new PropertyValueFactory<>("calidad"));
imdbColumn.setCellValueFactory(new PropertyValueFactory<>("imdbLink"));
añoColumn.setCellValueFactory(new PropertyValueFactory<>("año"));
tableResultados.setItems(peliculas);
Dove tableResultados è un TableView
e peliculas dichiarato come un ObservableList<Pelicula>
naturalmente non inizializzato.
Quello che odio e penso che non sia così OK è che quando ho bisogno di cambiare/aggiornare resultados
a YIFY
classe, ho anche bisogno di fare:
peliculas.clear();
peliculas.setAll(YIFY.getResultados());
Penso che tutto dovrebbe essere un Observable
fin dall'inizio alla classe YIFY
, quello che ho provato ma ho avuto MOLTI problemi in quanto non ho trovato lungo i documenti Java un'implementazione di classe corretta che non fosse astratta, quindi non avrei dovuto implementare alcun metodo aggiuntivo.
Come posso gestire questo? Il mio approccio è ok?
1 answers
Non sono sicuro di capire davvero la domanda, ma cosa c'è di sbagliato in
public class YIFY {
private static ObservableList<Pelicula> resultados = FXCollections.observableArrayList();
public static void setResultados(List<Pelicula> resultados) {
YIFY.resultados.setAll(resultados);
}
}