We're twisting our minds how to use predicate bindings correctly in the real world, i. e. beyond the trivial examples for FilteredList using simply static code but no bindings!
The problem is that our predicate must be bound to a chain of BooleanBindings, of which the final term needs the item injected into the predicate by the FilteredList. Example see purple code:
BooleanBinding a = ...
StringBinding b = ...
ObjectBinding<Predicate> c = Bindings.createObjectBinding(() -> item -> a.or(b.isEqualTo(item.someProperty())).get(), a, b); // Ugly: No "Bindings" style!
myFilteredList.predicateProperty().bind(c);
This code has an ugly smell! It first looks like "Bindings" style, but in fact is plain old lamba mostly! But it also is slow: The code enforces splitting of a and b into separate bindings as it enforces rebuilding the chain a.or(b.isEqualTo(...)) for each single iteration of titem in turn. That induces unnecessarily creating and garbage-collecting Bindings "on the fly", which is not how Bindings are intended -- they shall be created once and simply update their value instead of getting replaced themselves to prevent wasting CPU cycles and keep memory clean.
After three days of discussions and experiments we're giving up. If somebody knows how to do Predicate Bindings correctly (i. e. without temporarily building Bindings for each "t") we would be really happy to learn...! :-)
-Markus