从变量中获取资源图像
Get resources images from variable
我有一个名为 Monster.class 的 class,其中包含字符串类型变量。
另一个 class MonsterAdapter.class 使用 getter 获取值并在 MyGridView 上设置。
它工作正常,但前提是我像这样设置图像手册:
imageView.setImageResource(R.drawable.a1);
(a1为图片名称)
如果我尝试使用这个:
final Monster m = monsters[position];
String variableValue = m.getImg();
imageView.setImageResource(getResources().getIdentifier(variableValue, "drawable", getPackageName()));
它说无法解析方法“getResources()”和“getPackageName()”,我只能导入引发错误的静态方法:
错误
如果您在 Adapter 中获取值,请按如下方式使用
imageView.setImageResource(context.getResources().getIdentifier(variableValue, "drawable", context.getPackageName()));
您可以在适配器中为上下文创建对象并为其创建构造函数
示例:
public class YourAdapter extends BaseAdapter{
Context mContext;
public YourAdapter(Context context){
this.mContext = context;
}
}
你可以定义Context inner class MonsterAdapter
public class MonsterAdapter extends BaseAdapter{
Context mContext;
public MonsterAdapter(Context context, ...){
this.mContext = context;
...
}
}
那么你可以使用
imageView.setImageResource(mContext.getResources().getIdentifier(variableValue, "drawable", getPackageName()));
我有一个名为 Monster.class 的 class,其中包含字符串类型变量。
另一个 class MonsterAdapter.class 使用 getter 获取值并在 MyGridView 上设置。
它工作正常,但前提是我像这样设置图像手册:
imageView.setImageResource(R.drawable.a1);
(a1为图片名称)
如果我尝试使用这个:
final Monster m = monsters[position];
String variableValue = m.getImg();
imageView.setImageResource(getResources().getIdentifier(variableValue, "drawable", getPackageName()));
它说无法解析方法“getResources()”和“getPackageName()”,我只能导入引发错误的静态方法:
错误
如果您在 Adapter 中获取值,请按如下方式使用
imageView.setImageResource(context.getResources().getIdentifier(variableValue, "drawable", context.getPackageName()));
您可以在适配器中为上下文创建对象并为其创建构造函数
示例:
public class YourAdapter extends BaseAdapter{
Context mContext;
public YourAdapter(Context context){
this.mContext = context;
}
}
你可以定义Context inner class MonsterAdapter
public class MonsterAdapter extends BaseAdapter{
Context mContext;
public MonsterAdapter(Context context, ...){
this.mContext = context;
...
}
}
那么你可以使用
imageView.setImageResource(mContext.getResources().getIdentifier(variableValue, "drawable", getPackageName()));