Ani*_*rma 7 android android-sqlite
我将图像存储在drawable中,并将它们的资源ID存储在SQLite数据库中。我的数据库是在应用程序首次启动时创建的。
将图像ID保存在数据库中是否很好,还是每次应用程序启动时ID都会更改?
如果id更改,则在取回图像id时可能会收到错误。因此,将图像ID存储在数据库中是个好主意吗?
我需要将图像路径与其他相关数据一起存储在数据库中,这就是为什么我将图像ID存储在数据库中的原因。
一种方法是将可绘制对象存储在 strings.xml 中作为字符串数组,如下所示:
<string-array name="location_flags">
<item>@drawable/ic_image_name</item>
<item>@drawable/ic_image_name</item>
<item>@drawable/ic_image_name</item>
<item>@drawable/ic_image_name</item>
<item>@drawable/ic_image_name</item>
<item>@drawable/ic_image_name</item>
<item>@drawable/ic_image_name</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)
然后在您的活动代码中读取此数组:
TypedArray locationFlags=getResources().obtainTypedArray(R.array.location_flags);
Run Code Online (Sandbox Code Playgroud)
然后应用 for 循环,您可以获得 Drawable 如下所示:
for(int i=0i<locationFlags.length();i++)
{
Drawable drawable = locationFlags.getResourceId(i, -1);
}
Run Code Online (Sandbox Code Playgroud)
使用 TypedArray 后一定要回收它,因为它是一个共享资源:
locationFlags.recycle();
Run Code Online (Sandbox Code Playgroud)
最好的方法是将图像名称直接存储到数据库中并获取它,然后使用
int resID = this.getResources().getIdentifier("your photo name fetched from database","drawable","package name");
image.setResourceID(resID);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |