2015-09-20 4 views
0

Я новичок в разработке Android, и у меня есть путь вокруг чертежей. Теперь я пытаюсь получить доступ к внешней папке (с SD-карты) и загружать изображения в массив int, чтобы я мог их использовать. Однако после некоторых исследований вокруг С.О. я до сих пор не могу найти то, что может мне помочь.Android - Загрузка изображений из внешней папки в массив

В настоящее время я помещаю изображение (*. JPG) из моей вытяжки папки, и я их в массиве следующим образом:

int[] image = { R.drawable.location, R.drawable.diversity, R.drawable.classes, R.drawable.activities, R.drawable.sports, R.drawable.friends, 
        R.drawable.graduate}; 

Как я могу загрузить изображения из внешней папки в нечто подобное, как массив выше? Проблема здесь в названиях изображений. Как я могу получить имена изображений, когда я загружаю их из этой внешней папки (при условии, что он содержит только изображения)?

Любая помощь была бы принята с благодарностью.

Спасибо.

+1

Просто получить содержимое папки с дир File = новый файл (путь); String [] files = dir.list(); – matty357

+0

@ matty357 Но здесь проблема заключается в том, что это не массив int, который делает невозможным использование с моим 'setImageResource (image [index]);' – nTuply

ответ

0

следующий метод вернет вам путь все изображения с устройства, получить эти пути, и использовать их, чтобы показать изображение

public ArrayList<String> getFilePaths() 
     { 


      Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
      String[] projection = {MediaStore.Images.ImageColumns.DATA}; 
      Cursor c = null; 
      SortedSet<String> dirList = new TreeSet<String>(); 
      ArrayList<String> resultIAV = new ArrayList<String>(); 

      String[] directories = null; 
      if (u != null) 
      { 
       c = managedQuery(u, projection, null, null, null); 
      } 

      if ((c != null) && (c.moveToFirst())) 
      { 
       do 
       { 
        String tempDir = c.getString(0); 
        tempDir = tempDir.substring(0, tempDir.lastIndexOf("/")); 
        try{ 
         dirList.add(tempDir); 
        } 
        catch(Exception e) 
        { 

        } 
       } 
       while (c.moveToNext()); 
       directories = new String[dirList.size()]; 
       dirList.toArray(directories); 

      } 

      for(int i=0;i<dirList.size();i++) 
      { 
       File imageDir = new File(directories[i]); 
       File[] imageList = imageDir.listFiles(); 
       if(imageList == null) 
        continue; 
       for (File imagePath : imageList) { 
        try { 

          if(imagePath.isDirectory()) 
          { 
           imageList = imagePath.listFiles(); 

          } 
          if (imagePath.getName().contains(".jpg")|| imagePath.getName().contains(".JPG") 
            || imagePath.getName().contains(".jpeg")|| imagePath.getName().contains(".JPEG")          
            || imagePath.getName().contains(".png") || imagePath.getName().contains(".PNG") 
            || imagePath.getName().contains(".gif") || imagePath.getName().contains(".GIF") 
            || imagePath.getName().contains(".bmp") || imagePath.getName().contains(".BMP")       
      ) 
          { 



           String path= imagePath.getAbsolutePath(); 
          resultIAV.add(path); 

          } 
         } 
       // } 
       catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      } 

      return resultIAV; 


     } 
Смежные вопросы