我正在用Java和FXML编写Messenger,我想在ListView
(chatBar)上显示用户的所有当前聊天记录。我的聊天在ObservableArrayList
中,但我仍然无法将值添加到ListView
中。
public void fillChatBar() {
ArrayList<Chat> chats = db.getAllInvolvedChats(user.getUserID());
ObservableList<Pane> chatHolder = FXCollections.observableArrayList();
chats.forEach(chat -> {
Pane chatPane = new Pane();
Label chatName = new Label();
chatName.setText(chat.getOpponent(user.getUserID()).getUsername());
chatPane.getChildren().add(chatName);
chatPane.getChildren().add(new ImageView(chat.getOpponent(user.getUserID()).getProfileImage()));
chatHolder.add(chatPane);
});
chatBar.setItems(chatHolder);
}
我没有收到任何错误消息或异常。它只是不会显示。
答案 0 :(得分:0)
问题是您误解了do_outOfMemory_specific_stuff
的用法;)
存储在ListView
中的items
不是ListView
,而是模型。在cell-views
内部创建代表模型项目的单元格并在屏幕上显示它们。您可以通过简单地创建ListView
并将其添加为字符串列表来尝试。您将在屏幕上看到显示ListView<String>
值的标签。对于像String
这样的基本数据类型,您的String
自动创建有意义的单元格视图。对于更复杂的模型类型(例如自定义模型列表),您需要编写自己的单元格视图工厂(或在模型类中覆盖ListView
)。请参阅this tutorial作为使用字符串的第一个示例。可以找到更复杂的示例here。