2017-06-24 29 views
0

我有一個問題。我知道我可以在SQLite數據庫中存儲一個圖像字節數組。但是這需要一些額外的CPU工作,所以我試圖只存儲id(R.drawable.myImage)。將圖像ID存儲到SQLite數據庫但無法檢索它?

我把它作爲一個整數存儲起來,我可以找回它。我設置我的形象到ImageView的是這樣的:

ivSportIcon.setImageResource(getItem(i).getIcon()); 

但我得到一個錯誤:

Resources$NotFoundException: Resource ID #0x8

這是一個錯誤的方式?我應該將圖像作爲字節數組存儲嗎?先謝謝你!

+0

請顯示[mcve]以顯示您嘗試過的內容。 –

回答

0

我不知道如何存儲資源ID,但0x8不是資源ID。

除此之外,請記住,資源ID隨每個構建而變化,因此您今天保存的資源ID明天將有所不同。

取而代之的是,在數據庫中存儲一些其他標識符,您可以使用它來決定使用哪個drawable。

將實際圖像數據存儲在數據庫中的唯一原因是,如果您計劃在將來更改圖像,您希望用戶能夠使用碰巧與數據庫關聯的舊圖像條目。

+0

沒有0x8是R.java文件中的有效資源ID。除此之外,你是對的。我可能不需要將圖像保存到我的應用程序的數據庫中。而且我也不知道資源ID每次都在變化。我會等待其他答覆,然後我可以接受這個答案。除此之外,您還可以添加更多關於此主題的信息。 – Zapdos

0

您可以存儲繪製對象作爲一個字符串,而不是名稱,並使用this method檢索其ID:

public static int getResourceIdForName(Context context, String drawableName) { 
    final Resources res = context.getResources(); 
    final String packageName = context.getPackageName(); 
    return res.getIdentifier(drawableName , "drawable", packageName); 
} 

這是一個有點僵硬然而,因爲如果你決定改變你繪製的名字在將來,那麼你還需要更改數據庫中的名稱。

相關問題