Получение выбранного элемента из ListView

Я изменяю a ListView с результатами поиска в базе данных, чтобы использовать этот выбор, чтобы позже выполнить другой запрос БД.

Я хочу получить значение поля этого ListView. Какой метод я могу использовать для этого?

Я просто подумал, что могу добавить событие в onclick и сохранить его для атрибута для контроллера. Это тоже приемлемо?

Ответ 1

Скажите со списком:

ListView<String> listView =new ListView<String>();

Получение выбранного элемента из ListView:

listView.getSelectionModel().getSelectedItem();

Отслеживание (прослушивание) изменений в выборе списка списка:

listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
    @Override
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
        System.out.println("ListView selection changed from oldValue = " 
                + oldValue + " to newValue = " + newValue);
    }
});

Ответ 2

Вы можете создать собственный обработчик событий, сначала создать класс для обработки событий мыши.

import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;

class ListViewHandler implements EventHandler<MouseEvent> {
    @Override
    public void handle(MouseEvent event) {
        //this method will be overrided in next step
    }
 }

После создания класса перейдите туда, где вы хотите, чтобы событие произошло

 list.setOnMouseClicked(new ListViewHandler(){
        @Override
        public void handle(javafx.scene.input.MouseEvent event) {
            System.out.print(list.getSelectionModel().getSelectedIndex());
        }
 });

Ответ 3

У JFXtras есть класс, который расширяет ListView, у которого есть свойство selectedItemProperty, которое мне показалось удобным.

http://jfxtras.org/overview.html#_listview

Ответ 4

Спасибо, первое мнение работает на меня