1

我正在尝试为 Android 学习 Java,但不知道如何使用谷歌搜索。我想知道是否有办法以可编程的方式将数字附加到 R.id.variable 或 R.drawable.variable 等的末尾?

基本上我有几个标记为 image1、image2、image3 等的图像。我想将 ImageView 可绘制对象更新为基于另一个变量。因此,如果传递的变量是“1”,它会将视图更新为“image1”。如果它是“2”,它将更新“image2”等等,但我不知道在调用更新时是否有办法将“1”附加到“R.drawable.image”。

最好的方法是如何做到这一点?

4

4 回答 4

3

也许有帮助:

您的图片:image1.png、image2.png、....、imageN.png

你可以找到他们的 id :

getResources().getIdentifier("IMAGE_NAME", "drawable", context.getPackageName())

所以:

 int idImage1 = getResources().getIdentifier("image1", "drawable", context.getPackageName())
 int idImage2 = getResources().getIdentifier("image2", "drawable", context.getPackageName())
  .....
 int idImageN = getResources().getIdentifier("imageN", "drawable", context.getPackageName())
于 2012-03-15T17:04:16.923 回答
0

你所说的叫做反射。它可能会有点混乱,因此对于您所描述的情况,将图像放在数组或列表中并使用参数作为索引来检索它们可能会更好。

于 2012-03-15T17:02:47.337 回答
0

使用数组!您当然可以使用任何您想要的数据结构,您可能会发现 List(特别是 ArrayList)允许您使用更多的 Collections API。或者,如果您想按名称引用您的图像,您可以使用地图。

Image[] myImages = new Image[n];
//populate images e.g. myImages[0] = new Image();

void updateImage(int imageNo) {
    Image i = myImages[imageNp]; //arrays start at 0 not 1
    //do stuff to i
}
于 2012-03-15T17:02:49.453 回答
0

要通过动态名称获取资源,请使用getIdentifier()。该函数接受一个字符串并按该名称返回资源的 ID

这是我的代码中的一个示例,我在其中获取名称为“ run_任意整数_summary”的字符串资源的资源ID:

getResources().getIdentifier(
            String.format("run_%d_summary", mSelectedRun),
            "string", 
            getPackageName()
            );

可能有更好的方法来做你正在做的事情,但我会让更熟悉 Android 的人进入那个......

于 2012-03-15T17:08:17.923 回答