@Override
public void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
if (dataSupplier.apply(item)!=null){
if (displayText!=null){
displayText.removeListener(changeListener);
}
displayText= new DataObservableDisplayText(dataSupplier.apply(item)).get();
changeListenerGarbageCollectionSave = (observable, oldValue, newValue) -> {
setText(dataSupplier.apply(item).internal().getDisplayText());
};
changeListener = new WeakChangeListener<>(changeListenerGarbageCollectionSave);
displayText.addListener(changeListener);
changeListener.changed(displayText,null,displayText.get());
} else {
setText(alternativeDisplayText.apply(item));
}
}
}