我有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