2017-08-25 12 views
-2

Ich möchte eine Liste von Bildern aus SQLite abrufen.Kann die Symbollänge nicht auflösen

Das ist mein 'getImage()' Methode

public List<byte[]> getImage(int i) { 
    List<byte[]> list = new ArrayList<>(); 
    String selectImage = "SELECT VocabImage FROM Vocab WHERE VocabTopic =" + i; 
    Cursor c = database.rawQuery(selectImage, null); 
    if(c.moveToFirst()) 
     do{ 
      list.add(c.getBlob(c.getColumnIndex("VocabImage"))); 
     }while(c.moveToNext()); 

    c.close(); 
    return list; 
} 

Das ist mein Java-Klasse, wo ich will meine getImage() -Methode aufrufen. Es gibt jedoch einen Fehler, der besagt, dass die Symbollänge in (data.length) in der BitmapFactory-Zeile nicht aufgelöst werden kann. Hat jemand eine Idee, wie man das löst? Vielen Dank.

Intent intent = getIntent(); 

int topicId = intent.getIntExtra("SelectedTopicId", 1); 

databaseAccess.open(); 

List<byte[]>data = databaseAccess.getImage(topicId); 

Bitmap image = BitmapFactory.decodeByteArray(data, 0, data.length); 

imageView.setImageBitmap(image); 
+1

Ihre 'data' ein list.get (0) .length für get Bild ist 'List', müssen Sie entweder' data.get (x) 'von sort ausführen, um das Array zu erhalten, bevor Sie es verwenden. – LightYearsBehind

+0

Wenn Sie Bilder in einer Datenbank speichern. Es ist keine empfohlene Strategie, da dies zu langen Anruf führt, die Ihre App zu ANRs führen. Ändern Sie Ihre Speichermöglichkeiten! – Xenolion

Antwort

1
Bitmap image = BitmapFactory.decodeByteArray(data, 0, data.length); 

Änderung

Bitmap image = BitmapFactory.decodeByteArray(data.get(position), 0, data.get(position).length); // pass position for which you want length. 
+0

ich änderte und es sagt mein erstes Argument (Daten) ist falsch. – chernting

+0

sehe meine Änderungen .. ändern Sie Ihre Daten in data.get (Position) – Android

+0

akzeptiert bitte diese Antwort, wenn es in Ordnung ist. – Android

0

Sie müssen wie folgt ändern: bei Index 0.

Verwandte Themen