我有TableView
与Pagination
。像这样(简化):JavaFX TableView分页 - 不更新TableView更新ObservableList数据
public void createPagination() {
Pagination pagination = new Pagination((allDataCount/rowsPerPage) + 1, 0);
pagination.setPageFactory(this::createPage);
}
private Node createPage(int pageIndex) {
int fromIndex = pageIndex * rowsPerPage;
int toIndex = Math.min(fromIndex + rowsPerPage, allDataCount);
table.setItems(FXCollections.observableArrayList(data.subList(fromIndex, toIndex)));
return new BorderPane(table);
}
的问题是,当我做一个更新data
(ObservableList
)。该更改在TableView
中不可见。
正如我所看到的,问题在于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);
Tnx for answer,但这仍然不能解决问题。 – Virtap
您是否可以更新问题以显示如何更新数据? –
我已更新我的问题。 – Virtap