如何更改ListView中的自定义项目

时间:2013-03-23 22:10:35

标签: listview javafx-2 listviewitem

JavaFX - 我有一个带有方法(和其他功能)public String getName()的类Record。我有ListView<Record> listview,这是显示Record名称的代码:

listview.setCellFactory(new Callback<ListView<Record>, ListCell<Record>>() {
    public ListCell<Record> call(ListView<Record> param) {
        final ListCell<Record> cell = new ListCell<Record>() {
            @Override
            public void updateItem(Record item, boolean empty) {
                super.updateItem(item, empty);
                if (item != null) {
                    setText(item.getName());
                }
            }
        };
        return cell;
    }
});

如果我改变Record这样的名字,那将是不幸的:

Record record = listview.getSelectionModel().getSelectedItem();
record.setName("New Name");

列表视图中的单元格文本不会更改。我该怎么做才能解决这个问题?或者我如何以不同方式更改单元格的文本?

1 个答案:

答案 0 :(得分:2)

最好(或大多数JavaFX-ish)方法是将Record类的名称公开为属性并将ListCell的textProperty绑定到它。假设您的记录有方法nameProperty()返回StringPropery的实例,您可以替换该行

setText(item.getName());

textProperty().bind(item.nameProperty());