2014-09-01 46 views
1

我在我的數據庫中有一列存儲我在Android應用程序中使用的圖像的文件名。在我的大部分活動中,我需要使用很多這些圖像。打開文件名的ArrayList到Android資源

因此,我將這些文件名存儲在ArrayList<String>中,我希望我的輸出是這些圖像的資源ID的ArrayList<Integer>

基於這裏計算器幾個問題,我用下面的技術(got it from this question)

// Where tileImageFilenames is the ArrayList<String> 

    for(int i=0;i<tileImagesFilename.size();i++) 
    { 

     tileImagesIDS.add(getResources().getIdentifier(tileImagesFilename.get(i) , "drawable", getApplication().getPackageName())); 
    } 

這將返回我的ArrayList<Integer>全0的。

回答

2

必須創建新的對象,然後將其添加到您的ArrayList<Integer>

for(int i=0;i<tileImagesFilename.size();i++) 
    { 
     String name = tileImagesFilename.get(i).replace(".jpg",""); 
     tileImagesIDS.add(new Integer(getResources().getIdentifier(name , "drawable", getApplication().getPackageName()))); 
    } 
+1

從我的理解java中的泛型不適用於許可證,所以ArrayList 是明確的失敗。 – Raf 2014-09-01 14:58:18

+1

是的,它沒有工作 – tvieira 2014-09-01 15:07:47

+0

是什麼錯誤? – mmlooloo 2014-09-01 15:08:15

0

嘗試使用下面的代碼,如果它爲你工作,那麼你可以把它放在你的for循環。

String mDrawableName = "myappicon"; 
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 
+0

感謝向下表決,如果你是那種足以說明,這將有助於我理解我哪裏錯了。 – Raf 2014-09-01 14:51:17

+0

這幾乎是我現在使用的 – tvieira 2014-09-01 14:52:11

+0

嗯,你沒有清楚地提到你的問題是什麼是你的ArrayList的內容保存你的文件名。也許它有擴展名的文件。它必須只是文件名,沒有擴展名。我想說,你的問題並不完整,你需要提供更多的信息,但你似乎很快按下了投票。 – Raf 2014-09-01 14:53:34