Java 使用字符串作为值名和输入来查找文件

Java 使用字符串作为值名和输入来查找文件,java,android,canvas,Java,Android,Canvas,要在画布上绘制,我需要从以下资源获取图像文件: bmpNode = BitmapFactory.decodeResource(getResources(), R.drawable.node); 之后,我可以调用画布进行绘制: c.drawBitmap(bmpNode, xPos, yPos, null); 问题是我有大量ID为字符串值的唯一节点对象。我把它们从“1”编号到“100”。每个节点在资源中都有自己的映像文件,也称为“1”-“100”。 据我所知,我必须编写100行代码才能获得每幅图

要在画布上绘制,我需要从以下资源获取图像文件:

bmpNode = BitmapFactory.decodeResource(getResources(), R.drawable.node);
之后,我可以调用画布进行绘制:

c.drawBitmap(bmpNode, xPos, yPos, null);
问题是我有大量ID为字符串值的唯一节点对象。我把它们从“1”编号到“100”。每个节点在资源中都有自己的映像文件,也称为“1”-“100”。 据我所知,我必须编写100行代码才能获得每幅图像:

1 = BitmapFactory.decodeResource(getResources(), R.drawable.1);
2 = BitmapFactory.decodeResource(getResources(), R.drawable.2);
[...]
100 = BitmapFactory.decodeResource(getResources(), R.drawable.100);
现在,我不想为每个图像放置100行代码,而是想做一个循环,witch的功能类似于以下代码:

for (int i=0; i<arrayNodes.length; i++){        //for every Node in the Array
    "i" = BitmapFactory.decodeResource(getResources(), R.drawable."i");
}
for(inti=0;i获取如下id

ArrayList<Bitmap> bitmapArrayList = new ArrayList<Bitmap>();
for (int i=0; i<arrayNodes.length; i++){
  bitmapArrayList.add(i, BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(String.valueOf(i), "drawable", package_name)));
}

如果不存在这样的资源,
getIdentifier()
将返回0。

可能重复我已经研究过了,但是我在应用解决方案以文件名命名变量时遇到了问题。我也不知道如何以不同的方式解决它。谢谢你,艾克,这可能是我必须要做的。我会尝试一下!好的,这可以从字符串获取资源。单击e勾选答案左侧的图标,如果它解决了您的问题,则接受它。它解决了部分问题,因为我想将BitmapFactory.decodeResource()中的每一个都命名为“1”到“100”因此,我可以将它们预加载。否则,我必须在绘制时加载并解码所有100幅图像,在每个画布标记期间,这将完全滞后。为此,请使用数组列表,使用
array\u list.add(i,bitmap)
。稍后,使用索引
array\u list.get(i)检索位图
谢谢arol_123!其他人建议使用(散列)映射,然后删除了他的评论:(.我不确定什么性能更好,但我会研究一下,然后继续:)
bitmapArrayList.get(i);