java - 列出特定文件夹的媒体文件图像和视频
问题描述
请向我推荐一个完整的示例或代码,列出特定文件夹中的所有媒体(如图像和视频),并在网格视图中使用共享和删除选项。单击导航按钮时,我想要此活动。请添加额外的图像打开和视频播放选项。
提前致谢。
解决方案
使用此类从特定文件夹中获取所有图像和视频
public class ListImage{
// SDCard Path
//choose your path for me i choose sdcard
final String MEDIA_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Your Folder Name/Path";
private ArrayList<ImageModel> imageList = new ArrayList<>();
// Constructor
public ListImage() {
}
public ArrayList<ImageModel> getPlayList() {
File home = new File(MEDIA_PATH);
if (home.listFiles(new FileExtensionFilter()) != null) {
if (home.listFiles(new FileExtensionFilter()).length > 0) {
for (File file : home.listFiles(new FileExtensionFilter())) {
ImageModel imageModel = new ImageModel();
imageModel .setaName(file.getName().substring(0, (file.getName().length() - 4)));
imageModel .setaPath(file.getPath());
imageList.add(imageModel);
}
}
}
return imageList;
}
class FileExtensionFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".jpg") || name.endsWith(".JPG") || name.endsWith(".mp4") || name.endsWith(".MP4")); // add more conditions here
}
}
}
图像模型
public class ImageModel{
String aPath;
String aName;
public String getaPath() {
return aPath;
}
public void setaPath(String aPath) {
this.aPath = aPath;
}
public String getaName() {
return aName;
}
public void setaName(String aName) {
this.aName = aName;
}
}
在您的活动/片段中
private ArrayList<ImageModel> imagesList = new ArrayList<>();
ListImage listImage=new ListImage();
this.imagesList = listImage.getPlayList();
更新 :
删除文件
在您的适配器中删除按钮单击
holder.deleteButton.setOnClickListener(v -> {
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Your Folder Name/Path" + listImage.getaName() + ".jpg";
File file= new File(path);
if (file.exists()) {
if (file.delete()) {
//Toast.makeText(context, "File deleted", Toast.LENGTH_SHORT).show();
viewUpdate(position);
fragment.loadData();
} else {
Toast.makeText(context, "file not Deleted", Toast.LENGTH_SHORT).show();
}
}
}
public void viewUpdate(int position){
notifyItemRemoved(position);
list.remove(position);
notifyItemRangeChanged(position, list.size());
}
还在清单中添加这些权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
推荐阅读
- ruby - 如何在 Grafana - Youse 表或指标中汇总每天的指标?
- arrays - MongoDB - 选择数组包含文档字段的位置
- amazon-s3 - Amazon S3:在静态站点上添加 301 重定向长 URI 列表
- javascript - 如何测试默认道具功能是否附加到组件?| 反应 | 开玩笑| 酶
- azure - 将 CSV 作为数据工厂中的源的问题
- java - Selenium ChromeDriver 与 AdBlock 隐身
- proxy - Atom 使用系统代理
- google-cloud-platform - 如何在 GCP 上制作超过 2TB 的 linux VM 实例。我正在尝试下载一个 2.4 TB 的文件,
- javascript - 在这个例子中 @include 的 CSS 用法?我可以用@import 替换它们吗?
- google-apps-script - 将名称数组转换为电子邮件地址