To może prościej - mam klasę nadrzęną produkty po niej dziedziczą klasy: rowery, kaski, akcesoria, skutery. W produktach mam takie pola jak nazwa, cena, dostępność. W podklasach mam szczegółowe dane np. dla rowerów rozmiar ramy etc.
Jak zrobić tak żebym miał na gui w liście wszystkie produkty. Ale po kliknięciu mieć informacje różne dla każdego produktu. Np. klikam na rower wyskakuje mi informacja nazwa, cena, dostępność, rozmiar ramy, a klikam na kask i pokazuję mi się dane z pól nazwa, cena, dostępność i np. rozmiarkasku?
Poniżej przykładowy kod prezentujący mój problem, mam Controller, który pobiera dane uniwersalne dla wszystkich produktów. Niestety nie potrafię zrobić tak żeby po kliknięciu rozróżniał jakie dodatkowe informacje ma wyświetlić.
public class Controller {
private List<TodoItem> todoItems;
@FXML
private ListView<TodoItem> todoListView;
@FXML
private TextArea itemDetailsTextArea;
public void initialize() {
TodoItem item1 = new TodoItem("Mail birthday card", "Buy a 30th birthday card for John",
LocalDate.of(2016, Month.APRIL, 25));
TodoItem item2 = new TodoItem("Doctor's Appointment", "See Dr. Smith at 123 Main Street. Bring paperwork",
LocalDate.of(2016, Month.MAY, 23));
TodoItem item3 = new TodoItem("Finish design proposal for client", "I promised Mike I'd email website mockups by Friday 22nd April",
LocalDate.of(2016, Month.APRIL, 22));
TodoItem item4 = new TodoItem("Pickup Doug at the train station", "Doug's arriving on March 23 on the 5:00 train",
LocalDate.of(2016, Month.MARCH, 23));
TodoItem item5 = new TodoItem("Pick up dry cleaning", "The clothes should be ready by Wednesday",
LocalDate.of(2016, Month.APRIL,20));
todoItems = new ArrayList<TodoItem>();
todoItems.add(item1);
todoItems.add(item2);
todoItems.add(item3);
todoItems.add(item4);
todoItems.add(item5);
todoListView.getItems().setAll(todoItems);
todoListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
}
@FXML
public void handleClickListView() {
TodoItem item = todoListView.getSelectionModel().getSelectedItem();
StringBuilder sb = new StringBuilder(item.getDetails());
sb.append("\n\n\n\n");
sb.append("Due: ");
sb.append(item.getDeadline().toString());
itemDetailsTextArea.setText(sb.toString());
}
}