class ImageList implements ListModel<Image> {
String[] images_str;
private int selection;
// public void setImages(String[] images_str) {
// this.images_str = images_str;
// }
private Image[] images;
private EventDispatcher listeners = new EventDispatcher();
public ImageList(String[] images_str) {
this.images_str = images_str;
this.images = new EncodedImage[images_str.length];
}
public Image getItemAt(final int index) {
if (images[index] == null) {
images[index] = placeholder;
Util.downloadUrlToStorageInBackground(images_str[index], "list" + index, (e) -> {
try {
images[index] = EncodedImage.create(Storage.getInstance().createInputStream("list" + index)).scaledWidth(Display.getInstance().getDisplayWidth());
listeners.fireDataChangeEvent(index, DataChangedListener.CHANGED);
} catch (IOException err) {
err.printStackTrace();
}
});
}
return images[index];
}
public int getSize() {
return images_str.length;
}
public int getSelectedIndex() {
return selection;
}
public void setSelectedIndex(int index) {
selection = index;
}
public void addDataChangedListener(DataChangedListener l) {
listeners.addListener(l);
}
public void removeDataChangedListener(DataChangedListener l) {
listeners.removeListener(l);
}
public void addSelectionListener(SelectionListener l) {
}
public void removeSelectionListener(SelectionListener l) {
}
public void addItem(Image item) {
}
public void removeItem(int index) {
}
};