在我的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"/>
我做错了什么?
答案 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);