2012-12-07 5 views
6

Ich lese Dateien aus dem ausgewählten Ordner auf meinem Telefon, wie Sie im folgenden Code sehen können. Und wie könnte ich diese Arbeit mit einem Imagefile bekommen? Am Ende möchte ich eine Bildliste mit einer Vorschau von jedem Bild haben. wie folgt aus:Android: Wie man eine Bilddatei von der sd Karte zu HashMap mit simpleadapter setzt?

[IMG] (imgview) - [Dateiname] (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); 

Im folgenden Bild Ich mag den weißen "Bild" Bild mit dem Originalbild „genannt 41786486733 zu ersetzen. jpg "als Vorschau. sehen Damit der Benutzer, welches Bild das ist ...

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

Sie müssen eine benutzerdefinierte Listenansicht implementieren erstellen, findet hier ein Beispiel [link] [1] [1 ]: http://stackoverflow.com/questions/10267103/add-a-new-item-to-a-listview/10267200#10267200 – pouzzler

+0

Warum erstellen Sie HashMap-Instanz zwei Mal? Map = neue HashMap (); 'remove last one –

+0

Puzzler ich arbeite mit einem custon listview;) ρяσѕρєя jedes Mal, wenn Sie die HashMap reinitialisieren müssen, sonst funktioniert es nicht ... –

Antwort

0

die Lösung für mein Problem ist hier:

How to show thumbnail from image path?

I (mit Hilfe von ρяσѕρєя K) DANK einen customlistview zu schaffen hatte !!

Erstellen Sie einen benutzerdefinierten Adapter von erweiterten Baseadapter Klasse anstelle von SimpleAdapter. wie ich denke, das einfach sein wird, oder können Sie auch mehr benutzerdefinierten UI anstelle von inbuild

1

Mit Blick auf das Bild, und unter der Annahme, dass die weiße Bild mit dem Text "IMAGE" ist eine ImageView-Instanz, dann einfach ...

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

Oder habe ich Ihre Frage völlig missverstanden. Irgendwie versucht dies small example etwas ähnliches zu tun, was Sie versuchen zu erreichen.

+0

Dies funktioniert nicht ... Wenn ich es mit Ihrem Code mache, sind die Bilder leer und es sieht so aus das zweite Bild in meiner bearbeiteten Antwort ... –

1

Es gibt eine ähnliche Frage mit einer angenommenen Antwort. Check: Cannot open image file stored in sdcard

Snippet von dort:

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

Das funktioniert nicht auch ... Die Bildansicht ist leer ... –

+0

Versuchen Sie geschickt, um dies zu protokollieren: fileInDirectory.getAbsolutePath() wenn es korrekt ist, überprüfen Sie, ob das Bild in Ordnung ist. – neteinstein

+0

Es ist der richtige Pfad und das Bild ist in Ordnung. –

1

Sie haben zu implementieren benutzerdefinierte Listenansicht dies überprüfen example und scheinen Weg in hashmap Speicherung Problem zu schaffen, wird es hilfreicher, wenn Sie Fehlerprotokoll Katze bieten! Wie auch immer, kannst du versuchen unten Trick, um dein Ziel zu erreichen, anstatt Pfad in hashmap zu speichern? hoffe, es wird dir helfen.

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);