TableCell updateItem(int) method removes the listener for the value that is being observed and adds the listener again if it reaches the end of the method. However three return statements inside the method can and do prevent the listener from being added again, resulting in the following behavior:
Inserting a first row "Person" to the TableView and editing it's name by textfields that have the persons StringProperty bound to the textProperty works fine. The TableView updates it's content while typing in the textfield.
Inserting a second row "Person" to the TableView suddenly bugs. Typing in the textfield does not refresh the TableView content anymore, for any row.
I tried to fix this by adding the listener after every call to TableCell.updateItem(int) and it works (see FixedTableCell) although this might not be intended by the person who created TableCell.
Inserting a first row "Person" to the TableView and editing it's name by textfields that have the persons StringProperty bound to the textProperty works fine. The TableView updates it's content while typing in the textfield.
Inserting a second row "Person" to the TableView suddenly bugs. Typing in the textfield does not refresh the TableView content anymore, for any row.
I tried to fix this by adding the listener after every call to TableCell.updateItem(int) and it works (see FixedTableCell) although this might not be intended by the person who created TableCell.