【发布时间】:2021-10-01 07:33:35
【问题描述】:
如果我以编程方式创建一个文件夹并将一些图像存储在该文件夹中,那么我的自定义图库仅显示以前的文件夹,直到我重命名此文件夹。一旦我从文件管理器重命名或编辑此文件夹,所有图像都会显示。 这是我的代码
ArrayList<imageFolder> picFolders = new ArrayList<>();
ArrayList<String> picPaths = new ArrayList<>();
Uri allImagesuri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaStore.Images.ImageColumns.DATA , MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.BUCKET_ID};
Cursor cursor = this.getContentResolver().query(allImagesuri, projection, null, null, null);
try {
if (cursor != null) {
cursor.moveToFirst();
}
do{
imageFolder folds = new imageFolder();
String name = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME));
String folder = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME));
String datapath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
//String folderpaths = datapath.replace(name,"");
String folderpaths = datapath.substring(0, datapath.lastIndexOf(folder+"/"));
folderpaths = folderpaths+folder+"/";
if (!picPaths.contains(folderpaths)) {
picPaths.add(folderpaths);
folds.setPath(folderpaths);
folds.setFolderName(folder);
folds.setFirstPic(datapath);//if the folder has only one picture this line helps to set it as first so as to avoid blank image in itemview
folds.addpics();
picFolders.add(folds);
}else{
for(int i = 0;i<picFolders.size();i++){
if(picFolders.get(i).getPath().equals(folderpaths)){
picFolders.get(i).setFirstPic(datapath);
picFolders.get(i).addpics();
}
}
}
}while(cursor.moveToNext());
cursor.close();
} catch (Exception e) {
e.printStackTrace();
}
【问题讨论】:
-
这是列出文件的代码。查看 MediaStore 包含的内容。此刻无关紧要。去掉它。将代码发布到您创建文件夹和文件的位置。你甚至都不知道你是在哪个文件夹中创建的。
-
我使用此代码创建文件夹 File file = new File(Environment.getExternalStorageDirectory().getPath(), "My Folder/"+ System.currentTimeMillis() + ".jpg");
-
该代码不会创建文件夹。也不是文件。
标签: android gallery image-gallery