在我的Android应用程序中,我有类别存储在数据库的类别表中。我想为每个类别分配图标。
分类表如下:
问题是我无法使用R文件中定义的可绘制常量,因为它们不是静态的,并且会从构建更改为构建。
创建public.xml文件并在文件中定义所有可绘制常量是否正确?
我担心我可以使用这种方法覆盖一些android常量。
答案 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);