I have this common issue, as it appears to be. My table view wont refresh my items after I reset them. I have checked the data and it’s the new one.
I tried multiple solution from internet but no success.
Can’t reset all the columns because it adds one empty one extra (dont know why) and the resize just breakes.
My table is not editable. The new data is changed.
The data is refreshed if I change the ordering of the items and the rows change (:|).
I’m just left without ideas.
At the moment the refresh code is pretty simple.
ObservableList<User> data = FXCollections.observableArrayList(User.getResellers()); reseller_table.setItems(data);
Again the new data is correct. When I make an selection to the tableView it returns the new correct Item.
Advertisement
Answer
I had a similar problem with refreshing. My solution was to restrict the operations on the ObservableList
to those which work correctly with bind()
.
Assume ObservableList obsList
is the underlying list for the TableView
.
Then
obsList.clear()
(inherited from java.util.List<>
) will not update the TableView
correctly but.
Also calling setItem(obsList)
did not work to trigger a refresh…but…
obsList.removeAll(obsList)
(overwritten by ObservableList
) works fine because it fires the changeEvent correctly.
Refilling a list with completely new content then works as follows:
obsList.removeAll(obsList);
obsList.add(...); //e.g. in a loop...
or
obsList.removeAll(obsList);
FXCollections.copy(obsList, someSourceList)