2011-01-01 6 views
0

Ich habe es geschafft, Bilder in einem benutzerdefinierten drawListRow zu erhalten:Blackberry: Bilder von benutzerdefinierten verschwinden 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); 
} 

Das erste Mal, wenn alles perfekt funktioniert, aber sobald ich auf dem Boden der Liste und beginnen zu blättern wieder hoch, die Bilder sind verschwunden. Irgendwelche Vorschläge?

Edit: Ich habe das zweite Mal durch diesen Code herausgefunden:

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

dass InputStream inputStream = Connector.openInputStream(ImagePath); eine IOException wirft. Ich verstehe von here , dass IO unter diesen Bedingungen ausgelöst werden: aber ich weiß nicht, welche die Ursache ist: 1. mehr als eine openInputStream() auf einzelne Instanz von Dateiverbindung. 2. openInputStream() bei bereits geschlossener Dateiverbindung. 3. openInputStream() für ein Verzeichnis.

nochmal irgendwelche Vorschläge?

Antwort

0

Ich fand heraus, dass es am besten ist, ein separates Array von vollständig geformten Bildern zu erstellen und sowohl das als auch das Ding-Array an drawlistrow zu senden, anstatt zu versuchen, sie zu zeichnen und zu zeichnen, wenn jede Zeile gezeichnet wird.