Android 按名称处理drawables

Android 按名称处理drawables,android,image,drawable,Android,Image,Drawable,我已经知道如何处理像这样的抽绳: final int[] imgSizeIds = new int[]{ R.drawable.zero,R.drawable.one,R.drawable.two, ... }; String[] names = new String[]{"oliver", "peter", "mike"}; 及 在android中。但是如果我有一个字符串数组,它是这样填充的: final int[] imgSizeIds = new int[]{ R.draw

我已经知道如何处理像这样的抽绳:

final int[] imgSizeIds = new int[]{
  R.drawable.zero,R.drawable.one,R.drawable.two,
  ...
};
String[] names = new String[]{"oliver", "peter", "mike"};

在android中。但是如果我有一个字符串数组,它是这样填充的:

final int[] imgSizeIds = new int[]{
  R.drawable.zero,R.drawable.one,R.drawable.two,
  ...
};
String[] names = new String[]{"oliver", "peter", "mike"};
我想在处理oliver行时使用Image oliver.jpg

比如:

setImageResource(R.drawable. (AND HERE COMES "oliver") );
因此,结果将是:

setImageResource(R.drawable.oliver);
两个数组不是大问题,但我也不知道如何将字符串放入drawables的整数数组中。。我不能这样做:

final int[10] imgSizeIds; 
String stringy = "oliver"; 
int[0] = "R.drawable." + stringy;
因此,该数组中的第一项将设置为
R.drawable.oliver

尝试以下操作

int resid = getResources.getIdentifier("oliver" , "drawable", getPackageName());
setImageResource(resid);
因此结果将是:
setImageResource(R.drawable.oliver)

这可能不会发生。因为当您告诉android获取字符串变量中指定的字符串时,它会将其视为“oliver”,并将其类似于
R.drawable。“oliver”
,或者即使您尝试将其类似于-
setImageResource(“R.drawable.”+(这里是“oliver”)
它也会将其视为字符串“R.drawable.oliver”毕竟是一个字符串变量,不适合在
setImageResource()
方法中传递


确保R.drawable.imagename为您提供的是
int
,而不是字符串。

查看下面的代码是否有帮助-

String[] imgNames = new String[]{ "oliver", "apple", "car"};
并使用它来使用名称字符串数组中的名称-

ImageView imgvw = (ImageView) findViewById(getResources().getIdentifier(imgNames[index],"drawable",getPackageName()));

其中索引是项在字符串名称数组中的位置。

似乎是您问题的精简版…;-)您好,谢谢您的回答。我尝试使用它,但在第一个通道中我获得了getResources。eclipse中的一个错误是:getResources无法解决…不知道有什么问题…calss Extendes BaseAdapter=这可能是原因吗?