使用Glide和URI如何将图像设置到ImageView中?

5
我正在尝试使用Glide库在ImageView中显示图像,该图像位于res>drawable文件夹中,并且其名称从db中检索得到。如何使用Uri获取资源?redWifi.getImage()返回类似于"imagename.png"的字符串。
我正在使用下面的代码,但不显示图像。
Glide.with(detallesRedGuardadaActivity.this)
                .load(Uri.parse("file:///android_asset/" + redWifi.getImagen()))
                .asBitmap()
                .into(iconoRed);

我尝试使用.load(Uri.parse("file://android_asset/" + redWifi.getImagen())),但仍然无法正常工作。

你不需要使用库来从资源中设置图像。最简单的方法是将图像传输到drawable文件夹,然后使用myImageView.setImageResource(R.drawable.image_from_drawable); - Kostas Drak
我正在使用Glide,因为这段代码是CursorAdapter的一部分,每个项目都有一个从数据库中获取的图像。如果使用myImageview.setImageResource,由于数量众多的项目会阻塞用户界面线程。 - Eduardo Corona
所以图像名称在数据库中,您希望每次根据从数据库获取的图像名称获取正确的图像,对吗? - Kostas Drak
没错,图片在res>drawable>img1.png中,我需要一种适当的方法来使用uri(或其他方式)获取对图像的引用。 - Eduardo Corona
我尝试将图像的ID保存在数据库中(R.drawable.img),并且运行良好,但是如果我向项目添加其他可绘制资源,则在CursorAdapter中显示的图像不是应该是什么,这是因为在数据库中保存的ID与IDE给出的ID不匹配。 - Eduardo Corona
显示剩余3条评论
1个回答

12

URL file:///android_asset/ 表示您正在指向项目中的 assets 文件夹。如果您不知道将此目录放在哪里,请在这里查看使用 Gradle 的项目结构 这里

之后将您的图像放入该文件夹,然后就可以正常工作了:

Glide.with(context)
    .load(Uri.parse("file:///android_asset/"+fileName))
    .into(imageView);

谢谢!我把我的图片移到了资产文件夹,现在它可以正常工作了。 - Eduardo Corona
不客气。如果有帮助到您,可以接受我的答案。 - GVillani82
我直接将它传递给.load(/storage/emulated/0/1586779115967.jpg)吗? - Arbaz.in
我遇到了这个错误 E/GlideExecutor: Request threw uncaught throwable com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders for model: file:/storage/emulated/0/Android/data/pakage_name/folder_name/image.jpg - Kavin Raju S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接