Java Android将字符串名称强制转换为R.drawable.name
在我的android应用程序中,我需要在类MyAdapter中创建一个函数,该类在不是MainActivity的活动MyActivity中使用。该函数应具有以下结构Java Android将字符串名称强制转换为R.drawable.name,java,android,android-resources,Java,Android,Android Resources,在我的android应用程序中,我需要在类MyAdapter中创建一个函数,该类在不是MainActivity的活动MyActivity中使用。该函数应具有以下结构 public int getDrawableResourceId(String name) { // naive explanation return R.drawable. + name } 例如,如果调用getDrawableResorceIdtest,它应该返回整数值R.drawable.test。我无法使用
public int getDrawableResourceId(String name) {
// naive explanation
return R.drawable. + name
}
例如,如果调用getDrawableResorceIdtest,它应该返回整数值R.drawable.test。我无法使用int-drawableResourceId=getResources.getIdentifiername、drawable、getPackageName;因为Android Studio告诉我无法解析getResources和getPackageName方法。如果我用
int drawableResourceId = MyActivity.this
.getResources()
.getIdentifier(name, "drawable", MyActivity.this.getPackageName());
或
AndroidStudio告诉我活动不是一个封闭类。这就是为什么我要直接将字符串转换为R.drawable.name。对不起,我编辑了我的答案,脑子里想错了问题:
public static int getDrawable(Context context, String name) {
return context.getResources().getIdentifier(name, "drawable", context.getPackageName());
}
更新*
因为您在适配器中,所以假设您将MyAdapter作为类名do:
public class MyAdapter{
private Context mContext;
public MyAdapter(Context context){
mContext = context;
}
....
然后,您可以在下面轻松调用:
getDrawable(mContext, "name")
谢谢您的回答,但是我如何获取上下文呢?因此,如果您在MainActivity中使用getDrawable函数,您只需使用this或MainActivity即可。例如getDrawable this,名称如果在片段中,则可以使用getActivity如果我用getActivity替换函数中的上下文,则仍然无法解析该方法。我想这是因为我在适配器中,而不是在活动中。因此,调用您的MyAdapter就像是新的MyAdapterInactivity.this或MyAdaptergetActivity。非常感谢您的耐心:D.我必须使用MyAdapterMyActivity.this,它就像一个符咒;-。
getDrawable(mContext, "name")