Blackberry: изображения исчезают из пользовательского drawListRow - PullRequest
0 голосов
/ 02 января 2011

Мне удалось получить изображения в пользовательском 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 Ответ

0 голосов
/ 04 января 2011

Я понял, что лучше всего создать отдельный массив полностью сформированных изображений и отправить и этот, и массив вещей в drawlistrow, вместо того, чтобы пытаться формировать и рисовать их при рисовании каждой строки.

...