2016-08-06 10 views
0

Ich kann das Bild, das als Blob gespeichert wird, nicht aus der SQLite-Datenbank abrufen. Ich benutze Parcel. Unten ist mein Code. Ich möchte das Bild in der imageView namens galerie_foto_retrieve anzeigen. Jetzt zeigt die App einen Fehler an. Und ich kann es nicht laufen. Ich bin Anfänger in Android, also haben Sie irgendwelche Ideen, was ich falsch mache. Ich wäre dankbar für jede Hilfe!Android- Abrufen von Bild von SQLite mit Parcelable

DataProvider-

private byte[] byteArray; 

public DataProvider(byte[] byteArray) 

this.byteArray=byteArray; 

protected DataProvider(Parcel in) 
{ 
byteArray = new byte[in.readInt()]; 
in.readByteArray(byteArray); 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) 
{ 
dest.writeInt(byteArray.length); 
dest.writeByteArray(byteArray); 
} 

DataListActivity

if (cursor.moveToFirst()) 
       { 
        do {byte[] byteArray; 
         byteArray = cursor.getBlob(210); 
DataProvider dataProvider = new DataProvider(byteArray); 
     }while (cursor.moveToNext()); 
       } 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        Intent intent = new Intent(DataListActivity.this, RetrieveData.class); 
        intent.putExtra("data", (DataProvider) listDataAdapter.getItem(position)); 
        startActivity(intent); 
       } 
      }); 

Abrufen von Daten

byte[] byteArray; 
    ImageView galerie_foto_retrieve;  

Bundle bundle = getIntent().getExtras(); 
      if (bundle!=null){ 
       DataProvider dataProvider = bundle.getParcelable("data"); 
    Bitmap b = BitmapFactory.decodeByteArray(byteArray , 0, byteArray.length); 
       galerie_foto_retrieve.setImageBitmap(b); 

DbOperace

public Cursor getInformations(SQLiteDatabase db) 
    { 
     Cursor cursor; 
     String[] projections = { 
FormDatabase.FormularovaDatabaze.IMAGE1 
     }; 
     cursor = db.query(FormDatabase.FormularovaDatabaze.TABLE_NAME,projections,null,null,null,null,null); 
     if (cursor != null) { 
      cursor.moveToFirst(); 
      return cursor; 
     } 
     else 
     { 
      return cursor; 
     } 

Antwort

0

Ich habe es herausgefunden! Mein Fehler war in der Datei Abrufen von Daten Dies ist die richtige Lösung, wenn jemand wissen möchte, dass

byteArray=dataProvider.getByteArray(); 
Bitmap b = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length); 
galerie_foto_retrieve.setImageBitmap(b); 
Verwandte Themen