0

对安卓来说还是新手。要温柔。我已经阅读了许多关于动态填充 ImageView 的文章。我需要以某种方式做到这一点,但我正在努力使用正确的语法。具有讽刺意味的是,我知道如何在 iOS 中做到这一点,但我完全被 Android 难住了。下面是代码。

我想动态填充图像资源的名称及其位置。

//Set the string to lower case
String animalImageLocation = animalName.toLowerCase()+"icon";
//Prepare to set the value of the ImageView
animalView = (ImageView)findViewById(R.id.animalView);
//Dynamically populate the image into the animalView
animalView.setImageResource(getResources().getIdentifier("R.Drawable."+<dynamicValue??>,null,null));

我试过这个但失败了。

//Set the string to lower case
    String animalImageLocation = animalName.toLowerCase()+"icon";
    //Prepare to set the value of the ImageView
    animalView = (ImageView)findViewById(R.id.animalView);
    //Dynamically populate the image into the animalView
    animalView.setImageResource(getResources().getIdentifier("R.Drawable."+animalImageLocation,null,null));

我尝试了几种方法,所有这些方法要么不显示图像,要么只是崩溃。我需要用图像名称有效地填充 getIdentifier(),即 R.Drawable.bearicon

有任何想法吗?

杰里米

4

1 回答 1

1

首先,R.drawable没有资本,我认为这很重要。此外,如果你null作为班级通过,你也必须提供。

请尝试以下操作:

animalView.setImageResource(
    getResources().getIdentifier(
        animalImageLocation,
        "drawable",
        animalView.getContext().getPackageName()
    )
);

或者,如果您更喜欢传递null后面的参数,也许可以这样:

animalView.setImageResource(
    getResources().getIdentifier(
        animalView.getContext().getPackageName() + ":drawable/" + animalImageLocation,
        null,
        null
    )
);
于 2013-04-06T03:54:13.340 回答