如何将数据库记录与drawable id相关联?

时间:2014-12-27 12:05:41

标签: android

在我的Android应用程序中,我有类别存储在数据库的类别表中。我想为每个类别分配图标。
分类表如下:
categories table
问题是我无法使用R文件中定义的可绘制常量,因为它们不是静态的,并且会从构建更改为构建。

创建public.xml文件并在文件中定义所有可绘制常量是否正确?
我担心我可以使用这种方法覆盖一些android常量。

2 个答案:

答案 0 :(得分:2)

为什么不简单地使用可绘制的名称
对于给定的资源名称和类型,您可以在运行时获取资源ID

将此方法添加到您的代码中:

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;
    }
}

并像这样使用它:

int myID =
    getResourceID("your_resource_name", "drawable", getApplicationContext());

注意:如果是图像,则没有路径或扩展名。

答案 1 :(得分:1)

我认为你需要这个:

int imageResource = context.getResources().getIdentifier(imageName,
            "drawable", context.getPackageName());

如果你想将图像设置为imageView:

// set the image
if (imageResource != 0)
    yourImageView.setImageResource(imageResource);