2015-01-15 43 views
1

要绘制的画布我需要从资源,这样的映像文件:使用String作为值名称并输入到找到文件

bmpNode = BitmapFactory.decodeResource(getResources(), R.drawable.node); 

后,我可以叫我的画布绘制:

c.drawBitmap(bmpNode, xPos, yPos, null); 

问题是我有大量ID为String值的唯一节点对象。我将它们从“1”编号为“100”。每个节点在资源中都有自己的图像文件,也称为“1” - “100”。 我认识路,我不得不做了几百行代码让每一个影像:

1 = BitmapFactory.decodeResource(getResources(), R.drawable.1); 
2 = BitmapFactory.decodeResource(getResources(), R.drawable.2); 
[...] 
100 = BitmapFactory.decodeResource(getResources(), R.drawable.100); 

现在不是把100行代码为每个图像我想作一个循环,巫婆功能类似下面的代码:

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

我试图寻找到反射和地图,但我是新来的这样那样的问题,并不能适用什么我发现。此外,我不知道如何正确地搜索这个问题,因为我不知道方法“R.drawable”的输入值被称为什么。

+0

可能重复[Android,获取资源ID从字符串?](http://stackoverflow.com/questions/4427608/android-getting-resource-id-from-string) – Hemanth

+0

我已经看过,但我在应用解决方案命名文件名后面的变量时遇到问题。我也不了解如何以不同的方式解决问题。 – Deckweiss

+0

谢谢icke,这可能是我必须这样做的方式。我会试一试! – Deckweiss

回答

1

得到这样的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))); 
} 

要检索位图:

bitmapArrayList.get(i); 

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

+0

好吧,这适用于从字符串获取资源。 – Deckweiss

+0

这是否解决您的问题? – Hemanth

+0

单击答案左侧的刻度图标以接受它,如果它解决了您的问题。 – samgak

相关问题