将字符串的值发送给方法

时间:2015-11-24 10:51:31

标签: java android imageview

我正在制作Android应用。我有一个ImageView,在我的代码的某些部分,我需要更改其资源。我有一个

的String数组

String[] names = {"chair","desk"};

我的drawable文件夹中有2个图像,其名称为“chair”和“desk”。当我使用

image.setImageResource(R.drawable.chair);

它完美无缺。但我需要将其用作:

image.setImageResource(R.drawable.names[0]);

但Java不允许我这样做。我需要将string的值发送给该方法。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:6)

我会像

一样改变它
int[] names = {R.drawable.chair,R.drawable.desk};

然后你可以直接使用

image.setImageResource(names[0]);

如果您想使用String,可以使用getResources().getIdentifier()来检索具有该名称的drawable ID

答案 1 :(得分:2)

像这样使用

String[] names = {"drawable/chair","drawable/desk"};

int imageResource = getResources().getIdentifier(names[0], null, getActivity().getPackageName());

image.setImageResource(imageResource);

非常简单。

答案 2 :(得分:0)

使用R.drawable.xx可确保从正确的文件夹(本身可绘制/或可绘制-hdpi或drawable-mdpi)中拾取正确的图像,具体取决于设备的屏幕分辨率。因此,使用R.drawable.xx是推荐的方法,如反对" getResources()。getIdentifier(FixedPatch)"

由于R.drawable.xx是一个动态生成的对象,因此使用switch case并根据传入的case引用正确的drawable对象将是最好的。此外,具有默认情况可确保如果在drawable文件夹中找不到图像,仍会呈现ImageView而不会出现任何问题。

如,

Switch (Case)
  Case "myString" : ImageView.setImageResource(R.id.myString);//here R.id.myString is hardcoded object reference
  Case "myString2" : ImageView.setImageResource(R.id.myString);
  default : ImageView.setImageResource(R.id.myDefaultImage);