У меня есть ObservableList<Person>
, где Person
имеет firstName
и lastName
свойств (в соответствующем образе JavaFX), и я хочу сделать ListView
, который будет отображать имена людей и отражают изменения как в списке и свойства индивидуальный Person
объектов в списке. Как это лучше всего сделать? Есть два вопроса:Как использовать JavaFX ListView со сложными данными?
Нам нужно сделать
ListView
соблюдать два свойства имен, поэтому он может обновить изменения. Один из способов сделать это объясняется в this answer (см. Также this answer). Однако это решение требует передачи «экстрактора» в конструкторObservableList
, и мой список уже существует (как часть более крупной модели данных). Казалось бы, есть способ обернуть существующийObservableList
, чтобы добавить экстрактор, но я не вижу его в API. (Ну, есть this method, но он обрабатывает список, который обернут как простоList
, а неObservableList
, поэтому обновления исходного списка не сообщаются. Также есть this method, который создает «синхронизированную» оберткуObservableList
, но он не включает параметр экстрактора.) Возможно, мне нужно просто реализовать метод, чтобы сделать эту упаковку самостоятельно?Мы должны визуализировать
Person
элементов вListView
. Я знаю, как это сделать, используя собственный классListCell
, но я надеюсь, что может быть проще, так как я показываю только строки. Опираясь наPerson.toString
, это неправильная вещь, так как у меня могут быть другие взглядыPerson
, которые требуют разных преобразованийPerson
-String
. Есть ли способ передатьListView<Person>
Callback<Person,String>
(или что-то подобное) для преобразования элементов в строки?
Таким образом, в конце концов, у меня есть способ сделать то, что я хочу: написать свою собственную оболочку, в 1 и использовать пользовательские фабрики ячеек в 2. Я просто чувствую, что это требует больше работы с моей стороны чем это должно было бы, по моему мнению, относительно распространенной ситуацией. Есть ли более простой способ, которым я не хватает?
См http://stackoverflow.com/questions/34602457/add-extractor-to-existing-observablelist –
@James_D: спасибо! Я как-то не попал на эту страницу в поисках. Я только что начал с JavaFX сегодня, и это было немного разочаровывающим, пытаясь найти такую информацию ... – Winnie