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);
}

初めてすべてが完全に機能しますが、リストの一番下に到達して再び上にスクロールし始めると、写真が消えてしまいます. 助言がありますか?

編集:このコードで2回目に理解しました:

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 がスローされることを理解して います。しかし、何が原因かはわかりません。2. すでに閉じられているファイル接続に対する openInputStream()。3. ディレクトリに対する openInputStream()。

もう一度提案はありますか?

4

1 に答える 1

0

すべての行が描画されるたびにそれらを形成して描画しようとするのではなく、完全に形成された画像の別の配列を作成し、その配列とその配列の両方を drawlistrow に送信するのが最善であることがわかりました。

于 2011-01-04T16:05:01.427 に答える