2012-02-12 74 views
1

我的應用程序有一個部分,其中一些圖像顯示在gridview中。獲取SD卡上的位圖ID

GridView的建立之前,下面做:圖像文件名的

  • 下載列表從互聯網
  • 比較這個名單的項目已經存在於可繪製文件夾
  • 如果圖像不存在於Drawable文件夾中,將其下載並保存到SD卡中。

當使用可繪製的ID,這很容易得到,因爲他們是在一個資源文件夾(「繪製」)設立的GridView我做到這一點。

但是,如果我需要包含SD卡圖像以及在gridview中,我該如何檢索他們的ID?

回答

2

我有一個代碼從sdcard獲取圖像並將它們轉換爲一個URI數組,這個id就像URI一樣使用它們。

private void getData() { 
    File f = new File("/mnt/sdcard/"); 
    File[] imagelist = f.listFiles(new FilenameFilter(){ 

    public boolean accept(File dir, String name) 
    { 
     return ((name.endsWith(".jpg"))||(name.endsWith(".png"))); 
    } 
    }); 
    mFiles = new String[imagelist.length]; 

    for(int i= 0 ; i< imagelist.length; i++) 
    { 
     mFiles[i] = imagelist[i].getAbsolutePath(); 
    } 
    mUrls = new Uri[mFiles.length]; 

    for(int i=0; i < mFiles.length; i++) 
    { 
     mUrls[i] = Uri.parse(mFiles[i]);    
    } 
} 

您可以使用URI是這樣的: -

ImageView imageView=new ImageView(this); 
    imageView.setImageURI(mUrls[i]); 
+0

我忘了添加擾流板警告。無論如何,如果你願意,你可以使用文件名字符串,我喜歡URI的方式。而且你可以將已經存在的圖像ID轉換成你的可繪製文件夾,也可以轉換成URI。 – noob 2012-02-12 21:56:59

+0

謝謝,我將能夠使用此代碼:) – eightx2 2012-02-13 17:35:04

3

除應用程序隨附的文件(例如,下載到內部或外部存儲器)以外的文件都沒有資源ID。

資源ID是引用打包資源(如字符串,圖像等)的簡寫方式。這些id在構建時創建,只對內部資源有意義。

爲了使用從外部來源獲取的圖像,您可以通過文件名訪問它們,並且我認爲,您將創建ImageViews並將其添加到GridView

如果您需要辨別網格的不同圖像(可能是爲了觸摸/點擊目的),那麼您要處理的是ImageView,而不是關心它們包含的圖像的資源ID或文件名。

+0

很好的解釋,謝謝。 – eightx2 2012-02-13 17:35:35