2014-07-15 18 views
-1

我對存儲在drawable(s)文件夾中的圖像和包含圖像路徑的表的數據庫有一個簡短的問題。我使用的是sqlite,我的圖像是png的擴展名。我怎樣才能使我的數據庫有一個圖像路徑和R.drawable?如何更好地使用我的圖像路徑並將相應的圖像分配給相應的記錄?如何在android中使用圖像和數據庫?

例如:

在我的數據庫,我有一個表叫甲板和列存儲不是圖像的完整路徑,但部分路徑之一。類似這樣:

Deck 
--------------- 
/Allimages/lod/blueeyes.png 
/Allimages/dk1/darkhole.png 
    . 
    . 
    . 
    (to N record) 

Allimages文件夾存儲在drawable-ldpi文件夾中。順便說一句,我在桌上有6000個獨特的記錄。這個問題最好的辦法是什麼?

+0

我不是很確定我理解正確的話,但假設你試圖從可繪製文件夾中引用圖像,是不是一個可行的解決方案?例如:代替'/ Allimages/lod/blueeyes.png'路徑,將整數'R.drawable.blueeyes'存儲在數據庫中。另外,我建議不要在'drawable- *'dirs中設置子文件夾。 – curtisLoew

+0

您不能將子目錄保留在可繪製文件夾中。如果您真的這麼做,該文件夾內的圖像將無法在應用程序中使用。對於Android版本<2.2,該應用程序甚至不會編譯。 –

回答

0

the Allimages folder is stored within the drawable-ldpi folder.
不可能。您不能在可繪製文件夾中擁有子文件夾。

存放在繪製文件夾中的圖片,如:

  • lod_blueeyes.png
  • dk1_darkhole.png

等。

然後,我只將圖像名稱(不帶擴展名)存儲在我的數據庫中。 然後,我會使用一個函數來檢索文件夾繪製圖像:

protected final static int getResourceID 
(final String resName, final String resType, final Context ctx) 
{ 
    final int ResourceID = 
     ctx.getResources().getIdentifier(resName, resType, 
      ctx.getApplicationInfo().packageName); 
    if (ResourceID == 0) 
    { 
     throw new IllegalArgumentException 
     (
      "No resource string found with name " + resName 
     ); 
    } 
    else 
    { 
     return ResourceID; 
    } 
} 

用法:要檢索正確的圖像

myImageView.setBackgroundResource 
    (
     getResourceID 
     (
      "my_image_name", "drawable", getApplicationContext() 
     ) 
    ); 
相關問題