如何获取在drawable文件夹中分配的图像的名称?

时间:2014-08-07 19:42:12

标签: android string image sqlite

在我的Android应用程序中,在SQLite数据库中,我有一个String类型的图片属性。

以下代码有效,允许我从drawable文件夹中检索图像并将其显示在ImageView中。

protected ImageView pictureView;
...
pictureView = (ImageView) findViewById(R.id.pictureView);
pictureView.setImageDrawable(getResources().getDrawable(R.drawable.howard));
// howard.png is my image

问题在于我无法动态获取对象的图像,因为我生成代表可绘制图像名称的字符串的代码似乎不起作用。

我尝试以这些方式做到这一点,但它不起作用。

第一种方式:

Resources res = getResources();
String picture = cursor.getString(cursor.getColumnIndex("picture"));
int id = getResources().getIdentifier("samples.companydirectory.drawable/" + picture, null, null);
Drawable drawable = res.getDrawable(id);
pictureView.setImageDrawable(drawable);
第二种方式:

pictureView = (ImageView) findViewById(R.id.pictureView);
String picture = cursor.getString(cursor.getColumnIndex("picture"));
int id = getResources().getIdentifier("samples.companydirectory.drawable/" + picture, null, null);
pictureView.setImageResource(id);

XML代码:

<ImageView
            android:id="@+id/pictureView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我有一个类似很多东西的课程

public static int getResourceId(Context context, String name)
   {
       int resourceId = context.getResources().getIdentifier(name, "drawable", context.getPackageName());       
       return resourceId;
   }

在你的情况下很好

pictureView = (ImageView) findViewById(R.id.pictureView);
String picture = cursor.getString(cursor.getColumnIndex("picture"));
int id = getResources().getIdentifier(picture, "drawable", context.getPackageName());
pictureView.setImageResource(id);