2012-12-07 11 views
6

Sto leggendo i file dalla cartella selezionata sul mio telefono come potete vedere nel seguente codice. E come posso ottenere questo lavoro con un Imagefile? Alla fine mi piace avere un imagelist con un'anteprima di ogni immagine. Come quella:Android: come mettere un file immagine da una scheda SD a HashMap con simpleadapter?

[IMG] (imgview) - [Nome del file] (String)

 for(int i=0; i < files.length; i++) { 

     File file = files[i]; 
      map = new HashMap<String, String>(); 
     if(!file.isHidden() && file.canRead()) { 
      path.add(file.getPath()); 

      if(file.isDirectory()) { 
       map.put("img_list", ""+R.drawable.folder); 
       map.put("string_cell", file.getName()+"/"); 
       your_array_list.add(map); 

      }else{ 


       ImageFileFilter filefilter = new ImageFileFilter(file); 

       if(filefilter.accept(file)){ 
        //Its an imagefile 

        // ==> I like to replace the ""+R.drawable.image with the file that I have read 
        map.put("img_list", ""+R.drawable.image); 


       } else { 

        //Its not an image file 

       } 

       map.put("string_cell", file.getName()); 
       your_array_list.add(map); 

      } 
     } 


    } 

     SimpleAdapter mSchedule = new SimpleAdapter(this, your_array_list, R.layout.connected_upload_row, 
      new String[] {"img_list", "string_cell"}, new int[] {R.id.img_list, R.id.string_cell}); 
list.setAdapter(mSchedule); 

Nella figura seguente mi piace per sostituire l'immagine bianca "immagine" con l'immagine originale chiamata "41.786.486,733 mila. jpg "come anteprima. modo che l'utente può vedere ciò che questa immagine è ...

enter image description here

EDIT FLORIAN PILZ

if(filefilter.accept(file)){ 

        Log.v("PATH1", file.getPath()); 


        ImageView myImageView = (ImageView) findViewById(R.id.img_list); 
        Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath()); 
        myImageView.setImageBitmap(bmp); 



       } 

enter image description here

+0

È necessario implementare un controllo ListView personalizzata, vedere un esempio qui [link] [1] [1 ]: http://stackoverflow.com/questions/10267103/add-a-new-item-to-a-listview/10267200#10267200 – pouzzler

+0

perché stai creando istanza di HashMap due volte 'map = new HashMap (); 'rimuovi il puzzle ultimo –

+0

sto lavorando con una listview di custon;) ρяσѕρєя ogni volta che devi reinizializzare la HashMap altrimenti non funziona ... –

risposta

0

la soluzione per il mio problema è qui:

How to show thumbnail from image path?

ho dovuto creare un customlistview (con l'aiuto di ρяσѕρєя K) GRAZIE !!

creare un adattatore personalizzato con la classe di baseadapter estesa anziché SimpleAdapter. come penso che questo sarà facile o anche è possibile creare più interfaccia utente personalizzata invece di utilizzare inbuild

1

Guardando l'immagine, e supponendo che il bianco l'immagine con il testo "IMMAGINE" è un'istanza di ImageView, quindi semplicemente ...

Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath); 
myImageView.setImageBitmap(bmp); 

Oppure ho completamente frainteso la tua domanda. Comunque, questo small example prova a fare qualcosa di simile, quello che stai cercando di ottenere.

+0

Questo non funziona ... Quando lo faccio con il tuo codice le immagini sono vuote e sembra la seconda immagine nella mia risposta modificata ... –

1

C'è una domanda simile con una risposta accettata. Controllare: Cannot open image file stored in sdcard

Snippet da lì:

File directory = new File(extStorageDirectory, "myFolder"); 
File fileInDirectory = new File(directory, files[which]); 
Bitmap bitmap = BitmapFactory.decodeFile(fileInDirectory.getAbsolutePath()); 
+0

Questo non funziona troppo ... La vista immagine è vuota ... –

+0

Prova ad inviare questo log: fileInDirectory.getAbsolutePath() se è corretto controlla se l'immagine è ok. – neteinstein

+0

È il percorso corretto e l'immagine è a posto. –

1

Bisogna implementare ListView personalizzato controllare questo example e sembrano memorizzazione percorso nel hashmap creazione di problema, sarà più utile se si fornisce log degli errori gatto! in ogni caso, puoi provare il trucco per raggiungere l'obiettivo, invece di memorizzare il percorso in hashmap ?, spero che possa aiutarti.

File file = new File(Environment.getExternalStoragePath()+"/Folder/"); 

    file imageList[] = file.listFiles(); 

    for(int i=0;i<imageList.length;i++) 
    { 
     Log.e("Image: "+i+": path", imageList[i].getAbsolutePath()); 

     Bitmap bitmap = BitmapFactory.decodeFile(imageList[i].getAbsolutePath()); 
     myImageView.setImageBitmap(bitmap); 
Problemi correlati