0

我设法将图像放入自定义 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() 在一个目录上。

再次有什么建议吗?

4

1 回答 1

0

我发现最好只创建一个单独的完整图像数组并将其和事物数组发送到 drawlistrow,而不是在绘制每一行时尝试形成和绘制它们。

于 2011-01-04T16:05:01.427 回答