首页 > 解决方案 > 监听 ObservableList 的单个元素的删除

问题描述

我有一个ObservableList<T>类,我想向列表的单个元素添加一个侦听器,当从列表中删除该元素时应该调用该侦听器。当然,我可以在整个列表中添加一个更改侦听器,以检查删除的项目是否正确,但是是否有更惯用的解决方案,例如将元素包装在 Observable (so ObservableList<Observable<T>>) 中并将 InvalidationListener 添加到那个 Observable 什么的?谢谢你的帮助!

编辑:我正在寻找一种将侦听器添加到仅在删除特定元素时触发的 ObservableList 的方法。据我所知,fx 本身并不提供该功能。

标签: javafx

解决方案


我使用 JavaFX Bindings 库找到了一个简短的解决方案:

BooleanBinding isContained = Bindings.isNotEmpty(list.filtered(element ->  {
    return element == elementOfInterest;
}));
isContained.addListener ((obs, oldval, newval) -> {
    // do stuff
});

这给你一个确切的时间Observable<Boolean> isContainedtrue什么时候elementOfInterest包含在listfalse其他地方。倾听它的变化提供了解决方案。


推荐阅读