Autore Topic: Inserimento immagini in una GridView  (Letto 1699 volte)

Offline antony10

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Inserimento immagini in una GridView
« il: 22 Aprile 2010, 11:11:18 CEST »
0
Salve ragazzi! qualcuno sa dirmi come inserire immagini prese dalla mia sd card in una GridView??
Grazie
« Ultima modifica: 15 Maggio 2010, 17:28:01 CEST da JD »

Offline dodopepper

  • Utente junior
  • **
  • Post: 124
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic 32a black
Re:Inserimento immagini in una GridView
« Risposta #1 il: 22 Aprile 2010, 13:18:30 CEST »
0
Antò ti ho trovato questi due progetti http://mihaifonoage.blogspot.com/2009/09/displaying-images-from-sd-card-in.html

http://mihaifonoage.blogspot.com/2009/11/displaying-images-from-sd-card-in.html

Studiati un pò il codice, la questione è comunque piuttosto complessa già a partire dalla creazione dell'adapter e dell'adapter view fino ad arrivare al recupero delle thumbnails delle immagini, mi sembra che utilizzi anche un content provider. Cerchiamo di eviscerare un po' il problema, potrebbe uscir fuori una gran bella guida che tocca vari concetti. Se qualcuno + esperto potesse darci una mano saremmo molto grati!

Offline dodopepper

  • Utente junior
  • **
  • Post: 124
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic 32a black
Re:Inserimento immagini in una GridView
« Risposta #2 il: 28 Aprile 2010, 10:16:13 CEST »
0
Salve a tutti ragazzi, vi chiedo ancora aiuto per risolvere questo problema. Praticamente visto che l'applicazione dava di matto mostrandomi una scheramata nera ho deciso di proseguire passo passo e inserire una istruzione alla volta! Ho iniziato creando un cursor ottenendo dal content provider dei media le thumbnails. Stampando il risultato a schermo sembra essere inizializzato...
Codice (Java): [Seleziona]
String projection []= {MediaStore.Images.Thumbnails._ID};
cursor=managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Thumbnails.IMAGE_ID);
int posizione =cursor.getPosition();            
//TextView testo = (TextView)findViewById(R.id.TextView01);
//testo.setText(cursor.toString()+ posizione) ;
ImageView cornice= (ImageView)findViewById(R.id.ImageView01);
int idImmagine=cursor.getInt(cursor.getColumnIndex(projection[posizione++]));
cornice.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,  "" +idImmagine));


 Poi ho provato a inserire la prima thumb nel cursor all'interno di una image view ma il programma va in crash.  Mi capitavano gli stessi crash provando a insererire un image button nell'activity che fa le foto, poi ho reso l'intera surface view cliccabile in modo da poter scattare la foto solo tappando.



Tra le altre cose avevo impostato nell'activity della camera l'opzione per rimuovere la barra di stato ma stranamente la toglie anche lanciando quest'altra activity...a cosa puo' essere legato.

Grazie a tutti!

Offline dodopepper

  • Utente junior
  • **
  • Post: 124
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic 32a black
Re:Inserimento immagini in una GridView
« Risposta #3 il: 02 Maggio 2010, 20:40:32 CEST »
0
up,ragazzi :-P

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Inserimento immagini in una GridView
« Risposta #4 il: 03 Maggio 2010, 00:25:41 CEST »
0
Salve a tutti ragazzi, vi chiedo ancora aiuto per risolvere questo problema. Praticamente visto che l'applicazione dava di matto mostrandomi una scheramata nera ho deciso di proseguire passo passo e inserire una istruzione alla volta! Ho iniziato creando un cursor ottenendo dal content provider dei media le thumbnails. Stampando il risultato a schermo sembra essere inizializzato...
Codice (Java): [Seleziona]
String projection []= {MediaStore.Images.Thumbnails._ID};
cursor=managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Thumbnails.IMAGE_ID);
int posizione =cursor.getPosition();            
//TextView testo = (TextView)findViewById(R.id.TextView01);
//testo.setText(cursor.toString()+ posizione) ;
ImageView cornice= (ImageView)findViewById(R.id.ImageView01);
int idImmagine=cursor.getInt(cursor.getColumnIndex(projection[posizione++]));
cornice.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,  "" +idImmagine));


 Poi ho provato a inserire la prima thumb nel cursor all'interno di una image view ma il programma va in crash.  Mi capitavano gli stessi crash provando a insererire un image button nell'activity che fa le foto, poi ho reso l'intera surface view cliccabile in modo da poter scattare la foto solo tappando.



Tra le altre cose avevo impostato nell'activity della camera l'opzione per rimuovere la barra di stato ma stranamente la toglie anche lanciando quest'altra activity...a cosa puo' essere legato.

Grazie a tutti!

ciao dodopepper.

per quanto riguarda la gridview devi gestire la cosa con un tuo adapter, prova e se hai problemi chiedi ancora :)
prendi spunto da qui http://developer.android.com/guide/tutorials/views/hello-gridview.html

per usare le gli Uri delle immagini di anteprima nelle ImageView fai cosi, ti ho modificato un po il codice ;)

Codice (Java): [Seleziona]
String projection []= {MediaStore.Images.Thumbnails._ID};
cursor=managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, null, null, null); // quando poi creerai l adapter, questo cursor potresti ottenerlo nel costruttore nell adapter (idea)

cursor.moveToPosition(1);  //qui, al posto di 1, prenderai poi la posizione che ti da il metodo getView dell adapter
         
ImageView cornice= (ImageView)findViewById(R.id.ImageView01);
int idImmagine=cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID));
cornice.setImageURI(ContentUris.withAppendedId(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, idImmagine));


ciao
Qlimax

Offline dodopepper

  • Utente junior
  • **
  • Post: 124
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic 32a black
Re:Inserimento immagini in una GridView
« Risposta #5 il: 03 Maggio 2010, 13:10:49 CEST »
0
Ora funziona questo pezzetto di codice! grazie mille! il problema era sull'istruzione
Codice (Java): [Seleziona]
 int idImmagine=cursor.getInt(cursor.getColumnIndex(projection[posizione++]));
però sinceramente non capisco l'errore concettuale che avevo commesso.... anche mettendo solo projection va in crash il programma.... Forse non ho capito benissimo come funziona sta storia dei cursori eppure concettualmente sembra semplice. Un cursore è l'indice alla prima entry della "tabella" estratta dalla query o sbaglio? Forse c'ho ragionato in modo approssimativo!

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Inserimento immagini in una GridView
« Risposta #6 il: 03 Maggio 2010, 13:36:25 CEST »
0
il cursore punta ad una riga della tabella estratta con la query.
detto questo,
queste 3 linee di codice sono equivalenti nel tuo esempio
Codice (Java): [Seleziona]
int idImmagine=cursor.getInt(0); //prende l intero nella colonna di indice 0
int idImmagine=cursor.getInt(cursor.getColumnIndex(projection[0])); // prende l intero nella colonna con indice=indice della colonna con nome=stringa 0 della array projection
int idImmagine=cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID)); //prende l intero nella colonna con indice=indice della colonna con nome=MediaStore.Images.Thumbnails._ID



questa istruzione invece non ha molto senso:
Codice (Java): [Seleziona]
int idImmagine=cursor.getInt(cursor.getColumnIndex(projection[posizione++]));va probabilmente in crash con indexoutofboundsexception, nel tuo esempio è possibile solo chiamare projection[0] in quanto l'array è lungo solo 1.

l'array projection rappresenta le colonne che vogliamo estrarre nella nostra query, in SQL sarebbero gli agromenti di SELECT ...


spero di averti chiarito delle cose,
:)


saluti
Qlimax


Offline dodopepper

  • Utente junior
  • **
  • Post: 124
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic 32a black
Re: Inserimento immagini in una GridView
« Risposta #7 il: 03 Maggio 2010, 14:58:01 CEST »
0
Si mi hai chiarito le idee, sei stato gentilissimo, cmq forse dovrei imparare a gestire bene le eccezioni per fare un buon debug in caso di problemi.

Sent from my HTC Magic using Tapatalk

Offline sdbd

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc wildfire
Re:Inserimento immagini in una GridView
« Risposta #8 il: 23 Settembre 2011, 08:52:21 CEST »
0
Ragazzi grazie, quello che ho letto è stato veramente utile.
Ma se volessi invece vedere solo alcune immagini salvate sulla sd?