Я пытаюсь заполнить свой ListView
наблюдаемым списком, но код, кажется, даже не запускается.
У меня есть класс Controller, который контролирует все продукты питания
package sample;
import com.sun.javafx.collections.ObservableListWrapper;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import java.util.ArrayList;
public class FoodDrinkController {
private ArrayList<FoodDrink> fullList = new ArrayList<>();
//constructor with some stuff in it
public FoodDrinkController(){
FoodDrink cola = new FoodDrink("Coca Cola", 2.99, Global.itemtype.DRINK);
FoodDrink pepsi = new FoodDrink("Pepsi", 2.99, Global.itemtype.DRINK);
FoodDrink burger = new FoodDrink("burger", 7.99, Global.itemtype.MAIN);
fullList.add(cola);
fullList.add(pepsi);
fullList.add(burger);
}
public ObservableList<FoodDrink> filterByType(Global.itemtype itemtype){
ArrayList<FoodDrink> subList = new ArrayList<>();
for (FoodDrink listItem : fullList){
if(listItem.getItemtype().equals(itemtype)){
subList.add(listItem);
}
}
return FXCollections.observableArrayList(subList);
}
//plain old main method
public static void main(String[] args) {
//SelectDrinkController fbtd = new SelectDrinkController();
//System.out.println(fbtd.filterByType("DRINK"));
FoodDrinkController fdc = new FoodDrinkController();
System.out.println(fdc.filterByType(Global.itemtype.DRINK));
}
}
и контроллер для gui
package sample;
import javafx.application.Application;
import javafx.beans.Observable;
import javafx.collections.FXCollections;
import javafx.collections.ObservableArray;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import javafx.stage.Stage;
import java.net.URL;
import java.util.ResourceBundle;
public class SelectDrinkControllerGUI extends Application {
private FoodDrinkController fdc = new FoodDrinkController();
@FXML
ListView lvDrinks = new ListView();
@Override
public void start(Stage stage) throws Exception {
System.out.println("Hello");
}
public void initialize(URL location, ResourceBundle resources) {
ObservableList items = fdc.filterByType(Global.itemtype.DRINK);
System.out.println(items);
lvDrinks.getItems().addAll(items);
}
}
Так что, когда я запускаю программу, она просто показывает пустой ListView
вместо элементов DRINK, которые я вставил в контроллер.