无法从图像数组列表加载 imageView
Unable to load imageView from image array list
因此我需要使用本地保存的 .png 文件动态加载图像按钮。我从设备的内部存储中收集在特定文件夹中找到的图像。它工作正常。
List<String> fileNames = new ArrayList<>();
File folder = new File(Environment.getExternalStorageDirectory(), "Pictures/Screenshots");
if (!folder.exists()) folder.mkdir();
for (File file : folder.listFiles()) {
String filename = file.getName().toLowerCase();
if (filename.endsWith(".jpg") || filename.endsWith("jpeg") || filename.endsWith(".png")) {
fileNames.add(filename);
}
}
将结果记录为
[123.png]
最后我需要将图像按钮的背景设置为 123.png 图像。为此,我在循环中使用了
String picName = fileNames.get(i);
String picName1 = picName.replace(".png", "");
int resID = getResources().getIdentifier(picName1,"drawable","com.test.ABC");
imageView.setImageResource(resID);
那一刻我得到了这个错误
11-21 17:54:48.899 27250-27250/com.datamation.swdsfa W/ResourceType:
No package identifier when getting value for resource number
0x0000007b 11-21 17:54:48.904 27250-27250/com.datamation.swdsfa
W/ImageView: Unable to find resource: 123
android.content.res.Resources$NotFoundException: Resource ID #0x7b
at android.content.res.Resources.getValue(Resources.java:2350)
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:330)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:433)
at android.support.v7.widget.VectorEnabledTintResources.getDrawable(VectorEnabledTintResources.java:67)
at android.widget.ImageView.resolveUri(ImageView.java:648)
at android.widget.ImageView.setImageResource(ImageView.java:377)
at com.test.ABC.fragment.FragmentTools.ViewImageList(FragmentTools.java:342)
at com.test.ABC.fragment.FragmentTools.onClick(FragmentTools.java:287)
at android.view.View.performClick(View.java:4640)
at android.view.View$PerformClick.run(View.java:19421)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
提前致谢。
您好,您可以使用 Picasso 或 Glide 简单地做到这一点
我举的例子是使用 Picasso。
File file = new File(filepath);
Picasso.with(activity).load(file).fit().centerCrop().into(image);
您使用的方法 imageView.setImageResource(resID);
适用于 drawable
文件夹中的图像,但正如您所说 From internal storage of the device I collect the images found on particular folder.
似乎您正在尝试使用存储在某个目录中的图像在内部存储中。所以不行。
你可以试试这样的方法,
File file = new File("some path");
if(file.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageView.setImageBitmap(myBitmap);
}
要获取默认相机目录的路径,您可以尝试,
File picDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File file = new File(picDir, "your image.png");
您需要更改一点代码
List<String> fileNames = new ArrayList<>();
File folder = new File(Environment.getExternalStorageDirectory(), "Pictures/Screenshots");
if (!folder.exists()) folder.mkdir();
for (File file : folder.listFiles()) {
String filename = file.getName().toLowerCase();
if (filename.endsWith(".jpg") || filename.endsWith("jpeg") || filename.endsWith(".png")) {
fileNames.add(Environment.getExternalStorageDirectory() + "Pictures/Screenshots/" +filename);
}
}
您可以简单地使用 Picasso 库将图像放入 Image-Button
例如
Picasso.get().load(filename).into(yourImageButton);
为此,您需要将库添加到 gradle
implementation 'com.squareup.picasso:picasso:2.5.2'
作为参考,你可以使用这个linkPicasso
因此我需要使用本地保存的 .png 文件动态加载图像按钮。我从设备的内部存储中收集在特定文件夹中找到的图像。它工作正常。
List<String> fileNames = new ArrayList<>();
File folder = new File(Environment.getExternalStorageDirectory(), "Pictures/Screenshots");
if (!folder.exists()) folder.mkdir();
for (File file : folder.listFiles()) {
String filename = file.getName().toLowerCase();
if (filename.endsWith(".jpg") || filename.endsWith("jpeg") || filename.endsWith(".png")) {
fileNames.add(filename);
}
}
将结果记录为
[123.png]
最后我需要将图像按钮的背景设置为 123.png 图像。为此,我在循环中使用了
String picName = fileNames.get(i);
String picName1 = picName.replace(".png", "");
int resID = getResources().getIdentifier(picName1,"drawable","com.test.ABC");
imageView.setImageResource(resID);
那一刻我得到了这个错误
11-21 17:54:48.899 27250-27250/com.datamation.swdsfa W/ResourceType: No package identifier when getting value for resource number 0x0000007b 11-21 17:54:48.904 27250-27250/com.datamation.swdsfa W/ImageView: Unable to find resource: 123 android.content.res.Resources$NotFoundException: Resource ID #0x7b at android.content.res.Resources.getValue(Resources.java:2350) at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:330) at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:433) at android.support.v7.widget.VectorEnabledTintResources.getDrawable(VectorEnabledTintResources.java:67) at android.widget.ImageView.resolveUri(ImageView.java:648) at android.widget.ImageView.setImageResource(ImageView.java:377) at com.test.ABC.fragment.FragmentTools.ViewImageList(FragmentTools.java:342) at com.test.ABC.fragment.FragmentTools.onClick(FragmentTools.java:287) at android.view.View.performClick(View.java:4640) at android.view.View$PerformClick.run(View.java:19421) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5602) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(Native Method)
提前致谢。
您好,您可以使用 Picasso 或 Glide 简单地做到这一点
我举的例子是使用 Picasso。
File file = new File(filepath);
Picasso.with(activity).load(file).fit().centerCrop().into(image);
您使用的方法 imageView.setImageResource(resID);
适用于 drawable
文件夹中的图像,但正如您所说 From internal storage of the device I collect the images found on particular folder.
似乎您正在尝试使用存储在某个目录中的图像在内部存储中。所以不行。
你可以试试这样的方法,
File file = new File("some path");
if(file.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageView.setImageBitmap(myBitmap);
}
要获取默认相机目录的路径,您可以尝试,
File picDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File file = new File(picDir, "your image.png");
您需要更改一点代码
List<String> fileNames = new ArrayList<>();
File folder = new File(Environment.getExternalStorageDirectory(), "Pictures/Screenshots");
if (!folder.exists()) folder.mkdir();
for (File file : folder.listFiles()) {
String filename = file.getName().toLowerCase();
if (filename.endsWith(".jpg") || filename.endsWith("jpeg") || filename.endsWith(".png")) {
fileNames.add(Environment.getExternalStorageDirectory() + "Pictures/Screenshots/" +filename);
}
}
您可以简单地使用 Picasso 库将图像放入 Image-Button
例如
Picasso.get().load(filename).into(yourImageButton);
为此,您需要将库添加到 gradle
implementation 'com.squareup.picasso:picasso:2.5.2'
作为参考,你可以使用这个linkPicasso