2017-04-06 3 views
-5

Ich versuche, ein Bild aus einer SQLite-Datenbank abrufen. Das Bild wird als BLOB gespeichert und versucht, es mithilfe eines Arrays abzurufen. Ich bin mir nicht sicher, warum das so ist. Die Berechtigungen sind alle richtig eingestellt.Versuch, Länge von Null-Array zu erhalten - Bitmap-Bild von SQLite DB

package com.example.joao_.quizathonegroupteamproject.Activity; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.example.joao_.quizathonegroupteamproject.DatabaseClasses.User; 
import com.example.joao_.quizathonegroupteamproject.R; 

import java.util.ArrayList; 

/** 
* Created by Quoc Nguyen on 13-Dec-16. 
*/ 

public class UserListAdapter extends BaseAdapter { 

    private Context context; 
    private int layout; 
    private ArrayList<User> foodsList; 

    public UserListAdapter(Context context, int layout, ArrayList<User> foodsList) { 
     this.context = context; 
     this.layout = layout; 
     this.foodsList = foodsList; 
    } 

    @Override 
    public int getCount() { 
     return foodsList.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return foodsList.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    private class ViewHolder{ 
     ImageView imageView; 

    } 

    @Override 
    public View getView(int position, View view, ViewGroup viewGroup) { 

     View row = view; 
     ViewHolder holder = new ViewHolder(); 

     if(row == null){ 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(layout, null); 


      holder.imageView = (ImageView) row.findViewById(R.id.imgFood); 
      row.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder) row.getTag(); 
     } 

     User food = foodsList.get(position); 

     byte[] tblUsersImage = food.getImage(); 
     Bitmap bitmap = BitmapFactory.decodeByteArray(tblUsersImage, 0, tblUsersImage.length); 
     holder.imageView.setImageBitmap(bitmap); 

     return row; 
    } 
} 
+1

'" Ich bin mir nicht sicher, warum sein das tun. "' Was macht es, erhalten Sie eine spezifische Fehlermeldung? –

+0

Wie speichern und lesen Sie Bitmap zu/von der DB? –

+0

Ihr Array ist immer null? – Lele

Antwort

0

können Sie BLOB Bild abrufen und in Byte-Array wie folgt gespeichert:

byte[] array = cursor.getBlob(columnIndex); 

Bitmap bitmap = BitmapFactory.decodeByteArray(array, 0 ,array.length); 

und setzen es dann in Bildansicht

holder.imageView.setImageBitmap(bitmap); 
Verwandte Themen