Android: inserta una matriz de imágenes de mapa de bits en la base de datos SQLite

Quiero mostrar imágenes en mi lista personalizada de mi sqlite database.I convertido con éxito una matriz de imágenes de mapa de bits, y escribió código para convertir de nuevo a imágenes de mapa de bits. Pero las imágenes no se muestran off.I estoy utilizando SqliteDatabaseHelper clase para insertar imágenes en la base de datos. Todos los demás valores, excepto las imágenes, se muestran. ¿Qué valor debo insertar?

MainActivity.java

public class MainActivity extends Activity{ ListView prd_list; public static Integer clas; byte [] imge; int j; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); prd_list = (ListView) findViewById(R.id.list); DataBaseHandler dbh = new DataBaseHandler(this); /////////converting image to bytearray////// Bitmap[] images = { BitmapFactory.decodeResource(getResources (),R.drawable.candle1),BitmapFactory.decodeResource(getResources (),R.drawable.candl3),BitmapFactory.decodeResource(getResources(),R.drawable.lawn)}; byte[][] img = new byte[images.length][]; for (j=0; j<images.length; j++) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); images[j].compress(Bitmap.CompressFormat.PNG, 100, bos); img[j] = bos.toByteArray(); } ////////////////////////////////////// SQLiteDatabase db = dbh.getWritableDatabase(); Cursor cr = db.rawQuery("SELECT * FROM product", null); final String[] pname = new String[cr.getCount()]; String[] price = new String[cr.getCount()]; int i = 0; j=0; while(cr.moveToNext()) { String name = cr.getString(cr.getColumnIndex("pname")); String prprice = cr.getString(cr.getColumnIndex("pprice")); imge=cr.getBlob(cr.getColumnIndex("pimage")); img[j] = imge; pname[i] = name; price[i] = prprice; i++; j++; } ListAdapter adapter = new ListAdapter(this, img,pname, price); prd_list.setAdapter(adapter); } 

ListAdapter.java

 public class ListAdapter extends BaseAdapter { private final String[] pname; private final String[] price; private final byte[] []img; int j=0; private Context mcontext; public ListAdapter(Context c,byte[][]img,String[] pname,String[] price){ mcontext=c; this.pname=pname; this.price=price; this.img=img; } @Override public int getCount() { // TODO Auto-generated method stub return pname.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View List; LayoutInflater mLayoutinflater=(LayoutInflater) mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if(convertView==null){ List=new View(mcontext); List=mLayoutinflater.inflate(R.layout.mylist, parent, false); } else{ List = (View)convertView; } TextView textView1 = (TextView)List.findViewById(R.id.pr_name); TextView textView2 = (TextView)List.findViewById(R.id.pr_price); ImageView imageview= (ImageView)List.findViewById(R.id.pr_img); textView1.setText(pname[position].toString()); textView2.setText("Rs "+price[position] +" /-"); if(img.length>0){ Bitmap b1=BitmapFactory.decodeByteArray(img[j], 0, img[j].length); imageview.setImageBitmap(b1); } // TODO Auto-generated method stub return List; } } 

DataBaseHandler.java

 public class DataBaseHandler extends SQLiteOpenHelper{ public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "products.db"; public static final String CONTACTS_TABLE_NAME = "product"; public static final String CONTACTS_COLUMN_ID = "pid"; public static final String CONTACTS_COLUMN_NAME = "pname"; public static final String CONTACTS_COLUMN_EMAIL = "pspec"; public static final String CONTACTS_COLUMN_STREET = "pprice"; public static final String CONTACTS_COLUMN_CITY = "pfeature"; public static final String CONTACTS_COLUMN_PHONE = "pimage"; public DataBaseHandler(Context context) { super(context, DATABASE_NAME, null, 1); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("CREATE TABLE IF NOT EXISTS product(pimage BLOB,pid INTEGER PRIMARY KEY,pname TEXT,pprice NUMERIC,pspec TEXT,pfeature TEXT)"); db.execSQL("INSERT INTO product(pimage,pname,pprice,pspec) VALUES('img[0]','Candle stick 1',4000,'Solar garden / pathway light,Solar Panel:1pc crystal silicon solar cell, Battery:1pc 1.2V Ni-MH/Ni-CD AA battery 600MA ,Material:Stainless steel ,WaterProof and safe ')"); db.execSQL("INSERT INTO product(pimage,pname,pprice,pspec) VALUES('img[1]','Candle stick 3','4500','Solar garden / pathway light, Solar Panel:1pc crystal silicon solar cell, Battery:1pc 1.2V Ni-MH/Ni-CD AA battery 600MA, Material:Stainless steel, WaterProof and safe IP44 ')"); db.execSQL("INSERT INTO product(pimage,pname,pprice,pspec) VALUES('img[6]','Senson',4500,'Solar garden / pathway light, Solar Panel:1pc crystal silicon solar cell, Battery:1pc 1.2V Ni-MH/Ni-CD AA battery 600MA, Material:Stainless steel, WaterProof and safe IP44 ')"); db.execSQL("INSERT INTO product(pimage,pname,pprice,pspec) VALUES('img[7]','Thejus',7500,'Solar garden / pathway light, Solar Panel:1pc crystal silicon solar cell, Battery:1pc 1.2V Ni-MH/Ni-CD AA battery 600MA, Material:Stainless steel, WaterProof and safe IP44 ')"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } public void addEntry( byte[] image) throws SQLiteException{ SQLiteDatabase products = getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("pimage", image); products .insert( CONTACTS_TABLE_NAME, null, cv ); } public void addEntries(byte[][] img) { for(int i = 0 ; i < img.length ; i++) addEntry(img[i] ); } } 

EDITADO

 public void addEntry( byte[] image) throws SQLiteException{ SQLiteDatabase products = getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put("pimage", image); products .insert( CONTACTS_TABLE_NAME, null, cv ); } public void addEntries(byte[][] img) { for(int i = 0 ; i < img.length ; i++) addEntry(img[i] ); } 

Guarda tus imágenes como esta:

 public void addEntry( String name, byte[] image) throws SQLiteException{ ContentValues cv = new ContentValues(); cv.put(KEY_NAME, name); cv.put(KEY_IMAGE, image); database.insert( DB_TABLE, null, cv ); } public void addEntries(String[] name , byte[][] img) { for(int i = 0 ; i < name.length ; i++) addEntry(name[i] , img[i] ); } 

Intente esto en Su adaptador para obtener la imagen:

 byte[] outImage=img[j]; ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage); Bitmap theImage = BitmapFactory.decodeStream(imageStream); imageview.setImageBitmap(theImage); 
  • OnItemClick da el índice / la posición del elemento en la página visible ... no el índice real del elemento en la lista .. emitir al habilitar setTextFilterEnabled
  • nativescript-sqlite y módulo angular2 no se encuentra excepción
  • ¿Es posible acceder a la base de datos SQLite de una aplicación para Android en mi teléfono?
  • Cómo eliminar miles de registros de sqlite android
  • Tabla de SQLite con columnas de columna de enteros
  • ¿Cómo SQLite en Android maneja largas cadenas?
  • Cómo imprimir la consulta ejecutada por el método query () de android
  • Java.lang.StackOverflowError
  • La forma más rápida de buscar a través de cadenas almacenadas en la base de datos sqlite
  • Android: ORDER BY en la consulta
  • Base de datos SQLite de Android: inserción lenta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.