你好
所以我有以下问题.我有大约1500张Flutter 克牌的图片.我想在"图库"中显示它们,您可以在其中滚动浏览它们.我可以用ImageCell对象创建GridView,还可以向其中添加图像.现在我的问题是,如果我一次添加所有映像,逻辑上Java会因为堆错误而崩溃.我在列表中有图像url(本地文件).我如何实现它只加载15幅图像呢.如果我滚动,它将加载接下来的15个,并卸载旧的.因此,它将只加载实际可见图像的图像,而不是全部1500个.我该怎么做?我完全没有主意了.
这里是我的代码:
public void initialize() {
GridView<Image> gridView = new GridView<>();
gridView.setCellFactory(gridView1 -> new ImageGridCell(true));
Image image = new Image("C:\\Users\\nijog\\Downloads\\cardpictures\\01DE001.png");
gridView.setCellWidth(340);
gridView.setCellHeight(512);
//Platform.runLater(()-> {
// for (int i = 0; i < 5000; i++){
// gridView.getItems().add(image);
// }
//});
Platform.runLater(() -> gridView.getItems().addAll(createImageListFromCardFiles()));
borderPane.setCenter(gridView);
}
protected List<Image> createImageListFromCardFiles(){
List<Image> imageViewList = new ArrayList<>();
App.getCardService().getCardArray().stream()
//.filter(Card::isCollectible)
.sorted(Comparator.comparingInt(Card::getCost))
.sorted(Comparator.comparing(Card::isChampion).reversed())
.skip(0)
//.limit(100)
.forEach(card -> {
try {
String url = String.format(App.pictureFolderPath +"%s.png", card.getCardCode());
imageViewList.add(new Image(url));
} catch (Exception e) {
System.out.println("Picture file not found [CardCode = " + card.getCardCode() + "]");
App.logger.writeLog(Logger.Operation.EXCEPTION, "Picture file not found [CardCode = " + card.getCardCode() + "]");
}
});
return imageViewList;
}