我创建了一个类并将其添加到一个可观察列表中,我还有一个列表视图,我将其项目设置为我的可观察列表。
问题是当我将类中的对象添加到可观察列表时,列表视图在内存中显示它们的地址,如package.TestClass@574f5892
,如何使列表视图显示存储在每个对象中的文本及其图像他们的记忆地址?
由于
答案 0 :(得分:6)
快速入侵只是在toString
中定义TestClass
方法,返回要显示的文本。这不是一个非常强大的解决方案,因为通常您可能希望toString()
方法返回与您希望在GUI环境中显示的文本不同的内容。
"适当"这样做的方法是在列表视图上设置cellFactory
。
listView.setCellFactory(lv -> new ListCell<TestClass>() {
@Override
public void updateItem(TestClass item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
} else {
String text = ... ; // get text from item
setText(text);
}
}
});
要包含图片,您可以
listView.setCellFactory(lv -> new ListCell<TestClass>() {
private final ImageView imageView = new ImageView();
@Override
public void updateItem(TestClass item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
String text = ... ; // get text from item
setText(text);
Image image = ... ; // get image from item
imageView.setImage(image);
setGraphic(imageView);
}
}
});