我正在开发一些使用JavaFX的信使只是为了更熟悉这项技术。
Contact
有两个主要属性:User
和最后Message
。
我需要展示
到目前为止,我找到了两个解决方案
第一个解决方案是让Contact
不可变。因此,每当新消息到达或用户的信息发生变化时,都需要更换联系人。它有效,但在更新时在ListView中联系闪烁。
第二个解决方案是使用ObjectProperty
:
public class Contact {
private final ObjectProperty<User> user = ...;
private final ObjectProperty<Message> lastMessage = ...;
}
在这种情况下,我必须创建自定义ObservableList,以便在向列表中添加/删除Contact
时向Contact
的属性添加/删除侦听器。这是必需的,因为两个列表都应该自动排序。
因此两种解决方案都有缺点。
请提供有关如何实现目标的建议。
答案 0 :(得分:3)
在FXCollections
类中,有一种方法使用&#34;提取器&#34;函数告诉列表列表项中的哪些属性应该触发列表更改事件:
这将为您提供与第二种解决方案相同的方法,但无需编写代码来自行管理监听器。