我的Android应用程序基本上是一个简单的应用程序,其中有一个包含40个列表项的列表视图。点击后每个项目都会导致一个图像。所以有40张图片。
我总是可以将这些图像放在res / drawable文件夹中并直接从我的java文件中引用它们,在这种情况下会进行硬编码
img.setImageResource(R.drawable.day1);
.
.
.
img.setImageResource(R.drawable.day3);
.
.
。 等
无论如何(通过将图像的名称存储在xml中)以编程方式从文件夹中检索图像名称并显示它们?
答案 0 :(得分:1)
int resID = getResources().getIdentifier("day" + i,
"id", getPackageName());
其中i是你的索引
img.setImageResource(resID);
答案 1 :(得分:0)
使用资源创建动态位图对象。
ImageView image = (ImageView) findViewById(R.id.test_image);
Bitmap bMap = BitmapFactory.decodeFile("/sdcard/"+"test"+index+".png");
image.setImageBitmap(bMap);
使用相同的图像名称,如image1,image2 ...... 使用for循环或索引调用..
答案 2 :(得分:0)
我会做什么:
我会像你说的那样将图像放在res / drawable文件夹中,但不会像你说的那样打电话给他们;太多的工作!尝试创建一个数组“图像”,填充一个for循环,你在每个位置上添加如下内容:
for (i;i<x;i++) //Where x is the number of images you use
Images[i] = "R.drawable.day"+String.valueOf(i);
// Even you could try with:
// Images[i]="img.setImageResource(R.drawable.day"+String.valueOf(i)+")";
像这样,你只需要调用images [i]来调用图像“i”
我希望这可以帮助你:)
答案 3 :(得分:0)
这样做的简单方法是这样的: 您将图像放在res / drawable中,使用某种模式命名所有图像(例如:img1,img2,img3 ...),然后使用这样的名称模式动态加载它们:
String imageName =IMAGE_PATTERN+id;
int imageResource = getResources().getIdentifier(imageName,null,getPackageName());
imageView.setImageDrawable(getResources().getDrawable(imageResource));
,其中
IMAGE_PATTERN
可能类似于“图片”或“img”或您用来命名文件的任何内容:)