Blackberry: изображения исчезают из пользовательского drawListRow
Мне удалось получить изображения в пользовательском drawListRow:
public void drawListRow(ListField listField, Graphics graphics, int index, int y, int width) {
graphics.drawBitmap(0, (index) * listField.getRowHeight(), firstrowPostion, rowHeight, thing.image, 0, 0);
graphics.setFont(titleFont);
graphics.drawText(thing.title, firstrowPostion, y, (DrawStyle.LEFT | DrawStyle.ELLIPSIS | DrawStyle.TOP ), 250);
}
В первый раз, хотя все работает отлично, но как только я попадаю в конец списка и снова начинаю прокручивать, картинки исчезают. Какие-либо предложения?
Изменить: я понял во второй раз через этот код:
try {
InputStream inputStream = Connector.openInputStream(ImagePath);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int i = 0;
while ((i = inputStream.read()) != -1) {
outputStream.write(i);
}
byte[] data = outputStream.toByteArray();
EncodedImage eimg = EncodedImage.createEncodedImage(data, 0,
data.length);
Bitmap image = eimg.getBitmap();
inputStream.close();
outputStream.close();
return ImageUtility.resizeBitmap(image, 70, 70);
} catch (IOException e) {
return null;
} catch (IllegalArgumentException ex) {
return null;
}
}
тот InputStream inputStream = Connector.openInputStream(ImagePath);
бросает IOException. Отсюда я понимаю, что IO будет выброшено при следующих условиях: но я не знаю, в чем причина:
1. более одного openInputStream() в одном экземпляре соединения с файлом.
2. openInputStream() для уже закрытого подключения файла.
3. openInputStream() для каталога.
опять какие-нибудь предложения?
1 ответ
Я понял, что лучше всего создать отдельный массив полностью сформированных изображений и отправить их и массив вещей в drawlistrow, вместо того, чтобы пытаться формировать и рисовать их по мере прорисовки каждой строки.