将字符串的值发送给方法

问题描述:

我在制作Android应用程序。我有一个ImageView和我的代码的一部分,我需要更改其资源。我有一个String数组,这是将字符串的值发送给方法

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

我在绘制的文件夹,其名称是“椅子”和“书桌” 2个图像。当我使用

image.setImageResource(R.drawable.chair);

它完美的作品。但我需要用它作为:

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

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

+1

http://*.com/questions/6783327/setimageresource-from-a-string –

我会改变它像

int[] names = {R.drawable.chair,R.drawable.desk}; 

,然后你可以,如果你想使用一个String可以使用getResources().getIdentifier()以检索绘制的ID与名称

直接使用

image.setImageResource(names[0]); 

+0

但setImageResource方法得到一个整数。当我尝试发送字符串值 – berkc

+2

时,它显示错误,这就是为什么我从String []更改为int [] – Blackbelt

+0

R.drawable.chair/desk变量实际上是生成的指向正确资源的整数ID。这对他们来说并不合理。 – npace

像这样使用

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

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

image.setImageResource(imageResource); 

它很简单。

+0

这不会考虑基于屏幕分辨率的图像选择从相应的可绘制文件夹(有一个解释如下) – takrishna

+0

其使用像R.drawable.chair一样,但这是另一种方式来使用Android资源。它的图像分辨率基于imageview。 –

+0

不,它不是..当你指定drawable路径为“/ drawable”时,系统只查找“/ drawable”文件夹,而当你从R.drawable.xx引用时,系统会从合适的文件夹中选择资源(根据手机的屏幕分辨率,它可能是drawabl-hdpi或drawable-mdpi) – takrishna

使用R.drawable.xx确保根据设备屏幕分辨率从正确的文件夹(本身drawable /或drawable-hdpi或drawable-mdpi)中选取正确的图像。因此,使用R.drawable.xx是推荐的方法作为针对“getResources()。则getIdentifier(FixedPatch)

由于R.drawable.xx是动态生成的对象,使用开关壳体和引用适当的绘制对象基于即将到来的案例将工作最好。另外,有一个默认情况下可以确保如果在可绘制文件夹中找不到图像,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);