Java 使用Glide和字符串数组在资源中显示图像

Java 使用Glide和字符串数组在资源中显示图像,java,android,resources,local,android-glide,Java,Android,Resources,Local,Android Glide,目前,我有一个应用程序使用了一个RecyclerView,当点击其中一个项目时,它会使用Glide加载图像。这些都托管在Web服务器上,所有项目的URL都存储在字符串数组中。适配器计算出哪个位置与存储在“imageGallery”中的位置匹配,下载图像,然后将其加载到应用程序中。一旦它第一次被下载,它就会被存储并重复使用,每次你按下它时,它都会重复使用,但是每次你按下它时,它都会定期下载新的项目 这是对URL的 <string-array name="gallery"> &

目前,我有一个应用程序使用了一个
RecyclerView
,当点击其中一个项目时,它会使用Glide加载图像。这些都托管在Web服务器上,所有项目的URL都存储在字符串数组中。适配器计算出哪个位置与存储在“
imageGallery
”中的位置匹配,下载图像,然后将其加载到应用程序中。一旦它第一次被下载,它就会被存储并重复使用,每次你按下它时,它都会重复使用,但是每次你按下它时,它都会定期下载新的项目

这是对URL的

 <string-array name="gallery">
    <item>http://britishsheepbreeds.co.uk/app/gallery/badger_welsh_mountain.jpg</item>
    <item>http://britishsheepbreeds.co.uk/app/gallery/balwen.jpg</item>
    <item>http://britishsheepbreeds.co.uk/app/gallery/beltex.jpg</item>
</string-array>
资源文件夹:

Toast消息显示它从字符串数组中很好地提取信息,但是引用似乎不起作用

如果我将
.load(imageGallery)
替换为
.load(R.mipmap.beltex)
则会加载所有项目的图像


欢迎任何帮助。我做错了什么?这几乎就像引用不能从字符串中工作一样。我是否必须解析字符串以使其作为引用字段工作

您需要从名称中获取该图像的id才能加载它

将数组项从R.mipmap.beltex替换为beltex 在设置图像时,从名称中获取id

int resId = getResources().getIdentifier(imageGallery, "mipmap",getPackageName());

Glide.with(this).load(resId).into(gallery);

它不起作用的原因有很多。我建议您使用选项2。简单快速。@sergkk我就是这么做的,但它不能正常工作。有很多方法可以实现选项2。试试这个简单的方法:1。将图像添加到文件夹“drawable”2中。创建mapper-like-fun(position:int):if(position==1)返回R.drawable.your_photo_name 3。因此,我已经有了一个适配器,它将图像的字符串存储在值“imageGallery”中,因此be已经被处理了。当我点击我更改的一个时,当toast设置为在imageGallery上显示值时,它会在toast中显示正确的文本,但是由于某种原因,它不能作为链接工作,就像我说的那样,如果我在字符串数组中留有url,它就会工作,但是如果我将它从url更改为本地资源路径,它不会加载。随意更换
http://britishsheepbreeds.co.uk/app/gallery/beltex.jpg
对于
R.mipmap.beltex
使其无法工作。即使图像就在那个位置。工作起来很有魅力,我确信我必须将字符串更改为资源引用。甚至尝试了getResource,但它一直抛出一个错误,因为我没有使用正确的语法。谢谢。快速跟进。我也使用glide将图像推送到我的Recyclerview。Glide.load略有不同,因为在显示图像之前,我必须计算出项目的位置。我如何使用那里的get资源??代码为
.load(imagesArrayList.get(position.getmImages())
您可以使用holder.itemview.context.getresources()或将活动传递给适配器并使用activity.getresources()
Glide.with(this)
            .asBitmap()
            .load(imageGallery)
            .into(gallery);
int resId = getResources().getIdentifier(imageGallery, "mipmap",getPackageName());

Glide.with(this).load(resId).into(gallery);