我的应用有一个部分,其中一些图像以网格视图显示。
在设置gridview之前,完成以下操作:
在设置gridview时,我是通过使用drawable ID来实现的,这些ID很容易获取,因为它们位于资源文件夹(“drawable”)中。
但如果我需要在gridview中包含SD卡图像,我该如何检索他们的ID?
答案 0 :(得分:3)
除应用程序打包的文件以外的任何文件(例如,下载到内部或外部存储)都没有资源ID。
资源ID是引用打包资源(如字符串,图像等)的简便方法。这些ID是在构建时创建的,只对内部资源有意义。
为了使用从外部来源获取的图像,您可以通过文件名访问它们,我猜想,您将创建添加到ImageViews
的{{1}}。
如果您需要辨别网格的不同图像(可能是出于触摸/点击目的),那么它就是您处理的GridView
,而不是关注它们包含的图像的资源ID或文件名。
答案 1 :(得分:2)
我有一个代码从sdcard获取图像并将它们转换为URI数组,id类似于URI,使用它们。
private void getData() {
File f = new File("/mnt/sdcard/");
File[] imagelist = f.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name)
{
return ((name.endsWith(".jpg"))||(name.endsWith(".png")));
}
});
mFiles = new String[imagelist.length];
for(int i= 0 ; i< imagelist.length; i++)
{
mFiles[i] = imagelist[i].getAbsolutePath();
}
mUrls = new Uri[mFiles.length];
for(int i=0; i < mFiles.length; i++)
{
mUrls[i] = Uri.parse(mFiles[i]);
}
}
您可以像这样使用uri: -
ImageView imageView=new ImageView(this);
imageView.setImageURI(mUrls[i]);