PDA

Ver la Versión Completa : Tratar imagenes Sqlite desde src


Napster87
07/01/14, 10:36:44
A ver si explico lo que quiero hacer bien:

Tengo una bd en sqlite con datos texto,puedo mostrar en listview y en detalle en un formulario,pero quiero insertar un campo imagen junto a un campo texto en el listview,y no se como plantearlo.EL caso es que no voy a guardar imagenes en la bd,sino incluyendo la ruta de donde se encuentra (drawables o asset),desde una carpeta vaya.

Como modificar la bd?hago un insert con la direccion en plan "drawables/foto....

Y en la clase adapter tengo un cursor para extraer los datos pero siendo string el campo de la foto,para pasarlo al imageview no consigo hacerlo funcionar,ideas de por donde empezar??

Con datos lo estoy haciendo asi:

TextView tv = (TextView) view.findViewById(R.id.tnombre);
tv.setText(cursor.getString(cursor.getColumnIndex( DbAdapter.C_COLUMNA_NOMBRE)));

A ver si podeis decirme por donde empezar,no encuentro tutoriales que lo hagan asi,solo almacenandolas en tipo blob....

Dild0
07/01/14, 22:54:35
a ver si esto te ayuda

http://stackoverflow.com/questions/11595665/saving-resources-path-in-sqlite


Entiendo que guardando el nombre del recurso y pasando ese codigo consiues su id y ya solo sería añadirlo

Napster87
08/01/14, 10:13:08
Entiendo ese ejemplo,pero no se por donde empezar....
Estoy realizando insert a traves de codigo asi:

db.execSQL("INSERT INTO MUSEOS(_id, nombre,direccion,imagen) VALUES(1,'candelaria','cerca','drawable/candelaria')");

En el caso de almacenar la ruta asi,como acceder a ella,con ese codigo no me aclaro....es tipo string,nada de blob

Arasthel
08/01/14, 11:15:43
Deberías guardarlo como "R.drawable.candelaria" y luego cargarlo como te pone en la primera respuesta de Stack que te ha dado Dild0, con el getIdentifier.

Un saludo.

Dild0
08/01/14, 11:20:23
Otra opcion es guardar en base de datos no la ruta si no el id en un campo int

R.drawable.candelaria -> esto devuelve un int que guardas en el campo.
Luego haces la select y recuperas el Int en una variable
seteas tu imagen imagen.setBackgroundResource(resid); donde resid es tu entero

Arasthel
08/01/14, 11:38:44
El problema que puede tener eso que comentas es que dicho id se cambie al cambiar los resources. Realmente no sé si puede pasar, pero si fuera así podrías intentar cargar un id totalmente distinto, pongamos un String, cuando lo que quieres es un Drawable.

Un saludo.

Napster87
09/01/14, 09:53:13
Hola!gracias por la ayuda! He seguido lo que me has arasthel y tras probar y probar di con la solucion,la pongo aqui por si ayuda a alguien en un futuro:

El insert en la bd de sqlite al final quedo asi: '@drawable/foto'.Con r.drawable...no funcionaba....

y el codigo,haciendo referencia desde un cursor que tenia:

String uri = cursor.getString(cursor.getColumnIndex(DbAdapter.C _COLUMNA_IMAGEN));

int resId = context.getResources().getIdentifier(uri,null,cont ext.getPackageName());
ImageView im2= (ImageView)view.findViewById(R.id.timagen);
im2.setImageResource(resId);


Y con esto lo muestro en un listview junto con un campo texto perfectamente.
Siguiente paso....galeria de imagenes...jeje

Gracias!