2012-12-07 23 views
6

Czytam pliki z wybranego folderu w moim telefonie, tak jak w poniższym kodzie. I jak mogę uzyskać tę pracę z Imagefile? Na koniec lubię mieć imagelistę z podglądem każdego obrazu. tak:Android: Jak umieścić plik obrazu z karty SD na HashMap za pomocą prostego kontrolera?

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

W poniższym zdjęciu lubię zastąpić białą "obraz" obraz z oryginalnego obrazu o nazwie „41786486733. jpg "jako podgląd. , dzięki czemu użytkownik może zobaczyć, co obraz jest ...

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

Trzeba wdrożyć niestandardowy ListView, zobacz przykład tutaj [link] [1] [1 ]: http://stackoverflow.com/questions/10267103/add-a-new-item-to-a-listview/10267200#10267200 – pouzzler

+0

dlaczego tworzysz instancję HashMap dwa razy 'map = new HashMap (); 'usuń ostatnią puzzler –

+0

pracuję z listview custon;) ρяσπρєя za każdym razem, gdy trzeba ponownie uruchomić HashMap inaczej nie działa ... –

Odpowiedz

0

rozwiązanie dla mojego problemu jest tutaj:

How to show thumbnail from image path?

musiałem stworzyć customlistview (z pomocą ρяσѕρєя K) Dzięki !!

utworzyć niestandardowy adapter przez rozszerzoną klasę baseadapter zamiast SimpleAdapter. jak myślę, że to będzie łatwe lub też można utworzyć więcej niestandardowy interfejs zamiast stosowania inbuild

1

Patrząc na obraz, a przy założeniu, że biały obraz z tekstem "IMAGE" to instancja ImageView, a następnie po prostu ...

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

Czy też zupełnie źle zrozumiałem twoje pytanie. W każdym razie ten small example próbuje zrobić coś podobnego, co próbujesz osiągnąć.

+0

To nie działa ... Kiedy robię to z twoim kodem, obrazy są puste i wygląda jak drugie zdjęcie w edytowanej odpowiedzi ... –

1

Jest podobne pytanie z zaakceptowaną odpowiedzią. Sprawdź Cannot open image file stored in sdcard

urywek stamtąd:

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

To nie działa zbyt ... Widok obrazu jest pusty ... –

+0

Spróbuj wysłać, aby to zarejestrować: fileInDirectory.getAbsolutePath(), jeśli jest poprawna, sprawdź, czy obraz jest w porządku. – neteinstein

+0

To jest poprawna ścieżka, a obraz jest w porządku. –

1

Trzeba wdrożyć niestandardowych ListView sprawdzić example i wydają przechowywania ścieżki w hashmap tworzenia problem, to będzie bardziej pomocne, jeśli podasz dziennika błędów kota! w każdym razie możesz spróbować podstępem, aby osiągnąć cel, zamiast zapisywać ścieżkę w hashmapie, mam nadzieję, że ci to pomoże.

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