список медиа-файлов изображений и видео определенной папки - PullRequest
1 голос
/ 20 марта 2019

Пожалуйста, предложите мне полный пример или код, перечислите все медиа, такие как изображения и видео, в определенной папке с возможностью отправки и удаления в виде сетки. Я хочу эту активность при нажатии на кнопку навигации. Пожалуйста, добавьте дополнительные параметры, например, открытие изображения и воспроизведение видео.

Заранее спасибо.

1 Ответ

1 голос
/ 20 марта 2019

используйте этот класс для получения всех изображений и видео из определенной папки

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
    }
   }
  }

ImageModel

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" />
...