2014-01-10 3 views
0

Я разрабатываю приложение, в котором у меня есть gridview, но каким-то образом мое приложение не получает правильный путь для изображений. Я хочу выбрать изображения из выпадающей папки в gridview. Эмулятор показывает ошибки, как "путь к каталогу NAT не является действительным"Не получить правильный путь для изображений gridview

Вот код AppConstant.java

public class AppConstant { 

// Number of columns of Grid View 
public static final int NUM_OF_COLUMNS = 3; 

// Gridview image padding 
public static final int GRID_PADDING = 8; // in dp 

// SD card image directory 
public static final String PHOTO_ALBUM = "NAT"; 

// supported file formats 
public static final List<String> FILE_EXTN = Arrays.asList("jpg", "jpeg", 
     "png"); 

}

Вот код Utils.java

public class Utils { 

private Context _context; 

// constructor 
public Utils(Context context) { 
    this._context = context; 
} 

/* 
* Reading file paths from SDCard 
*/ 
public ArrayList<String> getFilePaths() { 
    ArrayList<String> filePaths = new ArrayList<String>(); 

    File directory = new File(
      android.os.Environment.getExternalStorageDirectory() 
        + File.separator + AppConstant.PHOTO_ALBUM); 

    // check for directory 
    if (directory.isDirectory()) { 
     // getting list of file paths 
     File[] listFiles = directory.listFiles(); 

     // Check for count 
     if (listFiles.length > 0) { 

      // loop through all files 
      for (int i = 0; i < listFiles.length; i++) { 

       // get file path 
       String filePath = listFiles[i].getAbsolutePath(); 

       // check for supported file extension 
       if (IsSupportedFile(filePath)) { 
        // Add image path to array list 
        filePaths.add(filePath); 
       } 
      } 
     } else { 
      // image directory is empty 
      Toast.makeText(
        _context, 
        AppConstant.PHOTO_ALBUM 
          + " is empty. Please load some images in it !", 
        Toast.LENGTH_LONG).show(); 
     } 

    } else { 
     AlertDialog.Builder alert = new AlertDialog.Builder(_context); 
     alert.setTitle("Error!"); 
     alert.setMessage(AppConstant.PHOTO_ALBUM 
       + " directory path is not valid! Please set the image directory name AppConstant.java class"); 
     alert.setPositiveButton("OK", null); 
     alert.show(); 
    } 

    return filePaths; 
} 

/* 
* Check supported file extensions 
* 
* @returns boolean 
*/ 
private boolean IsSupportedFile(String filePath) { 
    String ext = filePath.substring((filePath.lastIndexOf(".") + 1), 
      filePath.length()); 

    if (AppConstant.FILE_EXTN 
      .contains(ext.toLowerCase(Locale.getDefault()))) 
     return true; 
    else 
     return false; 

} 

/* 
* getting screen width 
*/ 
public int getScreenWidth() { 
    int columnWidth; 
    WindowManager wm = (WindowManager) _context 
      .getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 

    final Point point = new Point(); 
    try { 
     display.getSize(point); 
    } catch (java.lang.NoSuchMethodError ignore) { // Older device 
     point.x = display.getWidth(); 
     point.y = display.getHeight(); 
    } 
    columnWidth = point.x; 
    return columnWidth; 
} 

}

+0

Есть ли в вашем внешнем хранилище папка NAT?/ALOS изменить на 'File directory = new File ( android.os.Environment.getExternalStorageDirectory(), AppConstant.PHOTO_ALBUM)'. Ссылка http://developer.android.com/reference/java/io/File.html#File(java.lang.String, java.lang.String) – Raghunandan

+0

Нет. Нет папки под названием NAT. Я просто хочу получить изображения из выпадающей папки – 9477

+0

, тогда то, что вы делаете, неверно. – Raghunandan

ответ

0
I just want to retrieve images from drawable folder 

Вы можете сделать, как показано ниже

int[] images= {R.drawable.image1,R.drawable.image2}; 

Теперь используйте этот int[] images для заполнения GridView.

+0

Хорошо. Понял. Спасибо – 9477

+0

@ 9477 проверить эту ссылку http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work. Отметьте ответ как принятый, если он помогает – Raghunandan

1

Возможно, это связано с тем, что ваша папка NAT имеет некоторые подпапки и t его изображения хранятся в этой подпапке.

So Use: public static final String PHOTO_ALBUM = "NAT/Subfolder";

+0

Но я просто хочу получить изображения из выпадающей папки. – 9477

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