我有一个问题。我知道我可以在SQLite数据库中将图像存储为字节数组。但这需要一些额外的CPU工作,所以我试图只存储id(R.drawable.myImage
)。
我将它存储为整数,然后我可以将其检索回来。我将我的图像设置为imageview,如下所示:
ivSportIcon.setImageResource(getItem(i).getIcon());
但是我收到了一个错误:
资源$ NotFoundException:资源ID#0x8
这是错误的方法吗?我应该将我的图像存储为字节数组吗?先感谢您!
答案 0 :(得分:0)
我不知道您是如何存储资源ID的,但0x8
不是资源ID。
除此之外,请记住资源ID随每个构建而变化,因此您今天保存的资源ID明天会有所不同。
相反,在数据库中存储一些其他标识符,您可以使用它来决定使用哪些可绘制的文件。
将实际图像数据存储在数据库中的唯一原因是,如果您计划在将来更改图像和,您希望用户能够使用碰巧发生的旧图像与数据库条目相关联。
答案 1 :(得分:0)
您可以将Drawable的名称存储为字符串,并使用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);
}
这有点不灵活,但是,如果您决定将来更改drawable的名称,那么您还需要更改数据库中的名称。