JavaFX TableView分页-在更新ObservableList数据时不更新TableView
我有一个带有分页的JavaFX TableView分页-在更新ObservableList数据时不更新TableView,javafx,Javafx,我有一个带有分页的表视图。像这样(简化): 问题是,当我更新数据时(可观察列表)。更改在表视图中不可见 在我看来,问题在于data.subList。如果我使用table.setItems(data)设置项,所有更改都会立即显示在TableView中 有什么想法,我怎么解决这个问题 编辑 我正在像这样更新数据: //prepare new/changed Test object Test test = new Test(); test.setId(1000); int selectedInde
表视图
。像这样(简化):
问题是,当我更新数据时(可观察列表
)。更改在表视图中不可见
在我看来,问题在于data.subList
。如果我使用table.setItems(data)
设置项,所有更改都会立即显示在TableView
中
有什么想法,我怎么解决这个问题
编辑
我正在像这样更新数据:
//prepare new/changed Test object
Test test = new Test();
test.setId(1000);
int selectedIndex = table.getSelectionModel().getSelectedIndex() + pageIndex * rowsPerPage;
data.set(selectedIndex, test);
“创建一个新的可观察列表,并向其添加项目”-即,它是一个可观察列表,由您传入的数据初始化。因此,对原始列表的更改不会反映在它创建的新列表中
您需要,它“构造一个由原始列表支持的可观察列表”-即对基础列表的更改将反映在新列表中,反之亦然
所以你想要
table.setItems(FXCollections.observableList(data.subList(fromIndex, toIndex)));
现在,该表显示的列表只是整个数据
列表的一部分视图。因此,对表.getItems()
的更改将对数据可见,反之亦然。但是,表视图仅观察table.getItems()
,即使data
是一个可观察的列表,对数据的更改通知也不会传递到table.getItems()
。因此,您需要更改表正在观察的列表:
int selectedIndex = table.getSelectionModel().getSelectedIndex() ;
table.getItems().set(selectedIndex, test);
“创建一个新的可观察列表,并向其添加项目”-即,它是一个可观察列表,由您传入的数据初始化。因此,对原始列表的更改不会反映在它创建的新列表中
您需要,它“构造一个由原始列表支持的可观察列表”-即对基础列表的更改将反映在新列表中,反之亦然
所以你想要
table.setItems(FXCollections.observableList(data.subList(fromIndex, toIndex)));
现在,该表显示的列表只是整个数据
列表的一部分视图。因此,对表.getItems()
的更改将对数据可见,反之亦然。但是,表视图仅观察table.getItems()
,即使data
是一个可观察的列表,对数据的更改通知也不会传递到table.getItems()
。因此,您需要更改表正在观察的列表:
int selectedIndex = table.getSelectionModel().getSelectedIndex() ;
table.getItems().set(selectedIndex, test);
Tnx的答案,但这仍然不能解决问题。你能更新问题,以显示你是如何更新数据的吗?很抱歉,答复太晚。非常感谢你!这解决了我的问题。Tnx的答案,但这仍然不能解决问题。你能更新问题,以显示你是如何更新数据的吗?抱歉,迟了答复。非常感谢你!这解决了我的问题。