我有兩種方法。第一個檢索另一個類中搜索方法的結果列表。我可以一次更新我的TableView項目而不阻塞UI線程嗎?
/* 2 - Retrieve list of results */
qmitResultsList = QMITSearchUtil.execute(URL, keyword);
/* 3 - Show results */
populateTable(qmitResultsList, tableView)
第二,populateTable()
通過調用將所有的項目表中的一次:
ObservableList<QMITResult> dataPriority = FXCollections.observableArrayList(
qmitResultsList
);
tableView.setItems(dataPriority);
我的目標是每一個新的元素添加到TableView中,因爲它是在實時被處理。例如,我不想在第一種方法中處理並返回整個列表QMITSearchUtil.execute()
,而是想每次更新返回的每個結果的UI。這如何實現?我嘗試了幾種方法,例如使用Platform.runLater()
黑客,但沒有成功......
您可以通過在後臺線程中檢索結果並將其添加到Platform.runLater()中的表中來進行此操作(假設不會頻繁地調用Platform.runLater(...) 。你爲什麼將'Platform.runLater(...)'作爲黑客?這基本上就是它所設計的。 –
我會嘗試檢索我所做的並顯示我所嘗試的內容。 – santafebound
'populateTable(qmitResultsList,tableView)':這看起來像你正在更新支持'ObservableList'的列表而不是'ObservableList'本身,導致沒有通知被'ObservableList'觸發,這意味着'TableView'獲勝't'看到「任何改變(除非你永遠不修改列表,只更新已經在列表中的元素)... – fabian