Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在my/res文件夹中动态获取图像_Android_Image_View - Fatal编程技术网

Android 如何在my/res文件夹中动态获取图像

Android 如何在my/res文件夹中动态获取图像,android,image,view,Android,Image,View,我正在尝试动态地从我的/res文件夹中获取图像,我只是对下一部分感到困惑。我环顾了一下StackOverflow,看到了这个示例,这正是我需要从中开始的: String fName = "android.resource://j.l.library11/drawable/" + itemName; 我想既然它在我的/res文件夹中,它应该是: String fName = "android.resource://j.l.library11/drawable/res/" + itemName;

我正在尝试动态地从我的/res文件夹中获取图像,我只是对下一部分感到困惑。我环顾了一下StackOverflow,看到了这个示例,这正是我需要从中开始的:

String fName = "android.resource://j.l.library11/drawable/" + itemName;
我想既然它在我的/res文件夹中,它应该是:

String fName = "android.resource://j.l.library11/drawable/res/" + itemName;
以下哪一项是正确的

此外,我还不清楚接下来的几个步骤是什么,以便能够使用my/res文件夹(itemName)中的图像设置ImageView(iView)。我脑子里唯一能想到的是:

File file = new File(fName);
然后得到散列码

int itemHashCode = file.HashCode() 
然后把它当作

iView.setImageResource(itemHashCode).  

这行得通吗?或者有人知道正确的解决方案吗?

放置在res/drawable中的图像由R.java类中的AAPT到整数映射自动编译。您可以使用以下方法在ImageView上设置图像:

myImageView.setImageResource(R.drawable.nameOfYourImage);
编辑:我不清楚您为什么要这样做,但使用图像的哈希代码设置ImageView的资源将导致ResourceNotFoundException

编辑:如果您试图根据与数据库中某些数据的关联来动态设置图像,那么可以通过将R.drawable.imagename的int保存在数据库中的新整数列中来利用编译drawables这一事实。然后您可以简单地设置图像,如
setImageResource(intFromDB)
。如果您没有在代码中设置DB,因此无法访问已编译的R.drawable,则另一种方法如下:

Resources res = getResources();
String mDrawableName = "image_name";
int resourceId = res.getIdentifier(mDrawableName , "drawable", getPackageName());
Drawable drawable = res.getDrawable(resourceId);
icon.setImageDrawable(drawable );
甚至更短,这可能会起作用:

int id = getResources().getIdentifier("mypackagename:drawable/imageName", null, null);
imageView.setImageResource(id);

我要说的是反思:

Field[] fields = R.drawable.class.getFields();
for(Field field:fields){
    try {
            imageView.setImageResource(field.getInt(null));
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

但这不符合我的需要。myImageView.setImageResource(R.drawable.nameOfYourImage);“nameOfYourImage”是动态的,当我将传递到方法(itemName)中的字符串放入时,它告诉我setImageResource()中不能有字符串。例如setImageResource(R.drawable.+“itemName”)。请参阅我的编辑。你能解释一下你到底想做什么吗?这是正确的,因为方法setImageResource需要一个int,并且该int必须是R.drawable中的int之一。所以如果我有一个具有字符串参数(项名称)的方法我将如何使用该项目名称在我的/res文件夹中查找项目图像,然后将其设置为我的ImageView我想这就是我想说的。你没有解释这个方法是什么…“如果我有一个方法”。。。为什么有这样的方法,为什么不能使用普通的R.drawable.myImage?