// Path: android-imageselector-lib/src/main/java/com/netease/imageSelector/model/LocalMedia.java
// public class LocalMedia implements Serializable {
//     private String path;
//     private long duration;
//     private long lastUpdateAt;
// 
// 
//     public LocalMedia(String path, long lastUpdateAt, long duration) {
//         this.path = path;
//         this.duration = duration;
//         this.lastUpdateAt = lastUpdateAt;
//     }
// 
//     public LocalMedia(String path) {
//         this.path = path;
//     }
// 
//     public String getPath() {
//         return path;
//     }
// 
//     public void setPath(String path) {
//         this.path = path;
//     }
// 
//     public long getLastUpdateAt() {
//         return lastUpdateAt;
//     }
// 
//     public void setLastUpdateAt(long lastUpdateAt) {
//         this.lastUpdateAt = lastUpdateAt;
//     }
// 
//     public long getDuration() {
//         return duration;
//     }
//     public void setDuration(long duration) {
//         this.duration = duration;
//     }
// }
// 
// Path: android-imageselector-lib/src/main/java/com/netease/imageSelector/model/LocalMediaFolder.java
// public class LocalMediaFolder implements Serializable {
//     private String name;
//     private String path;
//     private String firstImagePath;
//     private int imageNum;
//     private List<LocalMedia> images = new ArrayList<LocalMedia>();
// 
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getPath() {
//         return path;
//     }
// 
//     public void setPath(String path) {
//         this.path = path;
//     }
// 
//     public String getFirstImagePath() {
//         return firstImagePath;
//     }
// 
//     public void setFirstImagePath(String firstImagePath) {
//         this.firstImagePath = firstImagePath;
//     }
// 
//     public int getImageNum() {
//         return imageNum;
//     }
// 
//     public void setImageNum(int imageNum) {
//         this.imageNum = imageNum;
//     }
// 
//     public List<LocalMedia> getImages() {
//         return images;
//     }
// 
//     public void setImages(List<LocalMedia> images) {
//         this.images = images;
//     }
// }


import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import com.netease.imageSelector.R;
import com.netease.imageSelector.model.LocalMedia;
import com.netease.imageSelector.model.LocalMediaFolder;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;

    public LocalMediaLoader(FragmentActivity activity, int type) {
        this.activity = activity;
        this.type = type;
    }

    HashSet<String> mDirPaths = new HashSet<String>();

    public void loadAllImage(final LocalMediaLoadListener imageLoadListener) {
        activity.getSupportLoaderManager().initLoader(type, null, new LoaderManager.LoaderCallbacks<Cursor>() {
            @Override
            public Loader<Cursor> onCreateLoader(int id, Bundle args) {
                CursorLoader cursorLoader = null;
                if (id == TYPE_IMAGE) {
                    cursorLoader = new CursorLoader(
                            activity, MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            IMAGE_PROJECTION, MediaStore.Images.Media.MIME_TYPE + "=? or "
                            + MediaStore.Images.Media.MIME_TYPE + "=?",
                            new String[]{"image/jpeg", "image/png"}, IMAGE_PROJECTION[2] + " DESC");
                } else if (id == TYPE_VIDEO) {
                    cursorLoader = new CursorLoader(
                            activity, MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                            VIDEO_PROJECTION, null, null, VIDEO_PROJECTION[2] + " DESC");
                }
                return cursorLoader;
            }

            @Override
            public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
                // 目录列表
// Path: android-imageselector-lib/src/main/java/com/netease/imageSelector/model/LocalMedia.java
// public class LocalMedia implements Serializable {
//     private String path;
//     private long duration;
//     private long lastUpdateAt;
// 
// 
//     public LocalMedia(String path, long lastUpdateAt, long duration) {
//         this.path = path;
//         this.duration = duration;
//         this.lastUpdateAt = lastUpdateAt;
//     }
// 
//     public LocalMedia(String path) {
//         this.path = path;
//     }
// 
//     public String getPath() {
//         return path;
//     }
// 
//     public void setPath(String path) {
//         this.path = path;
//     }
// 
//     public long getLastUpdateAt() {
//         return lastUpdateAt;
//     }
// 
//     public void setLastUpdateAt(long lastUpdateAt) {
//         this.lastUpdateAt = lastUpdateAt;
//     }
// 
//     public long getDuration() {
//         return duration;
//     }
//     public void setDuration(long duration) {
//         this.duration = duration;
//     }
// }
// 
// Path: android-imageselector-lib/src/main/java/com/netease/imageSelector/model/LocalMediaFolder.java
// public class LocalMediaFolder implements Serializable {
//     private String name;
//     private String path;
//     private String firstImagePath;
//     private int imageNum;
//     private List<LocalMedia> images = new ArrayList<LocalMedia>();
// 
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getPath() {
//         return path;
//     }
// 
//     public void setPath(String path) {
//         this.path = path;
//     }
// 
//     public String getFirstImagePath() {
//         return firstImagePath;
//     }
// 
//     public void setFirstImagePath(String firstImagePath) {
//         this.firstImagePath = firstImagePath;
//     }
// 
//     public int getImageNum() {
//         return imageNum;
//     }
// 
//     public void setImageNum(int imageNum) {
//         this.imageNum = imageNum;
//     }
// 
//     public List<LocalMedia> getImages() {
//         return images;
//     }
// 
//     public void setImages(List<LocalMedia> images) {
//         this.images = images;
//     }
// }


// Path: android-imageselector-lib/src/main/java/com/netease/imageSelector/utils/LocalMediaLoader.java
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import com.netease.imageSelector.R;
import com.netease.imageSelector.model.LocalMedia;
import com.netease.imageSelector.model.LocalMediaFolder;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;


    public LocalMediaLoader(FragmentActivity activity, int type) {
        this.activity = activity;
        this.type = type;
    }

    HashSet<String> mDirPaths = new HashSet<String>();

    public void loadAllImage(final LocalMediaLoadListener imageLoadListener) {
        activity.getSupportLoaderManager().initLoader(type, null, new LoaderManager.LoaderCallbacks<Cursor>() {
            @Override
            public Loader<Cursor> onCreateLoader(int id, Bundle args) {
                CursorLoader cursorLoader = null;
                if (id == TYPE_IMAGE) {
                    cursorLoader = new CursorLoader(
                            activity, MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            IMAGE_PROJECTION, MediaStore.Images.Media.MIME_TYPE + "=? or "
                            + MediaStore.Images.Media.MIME_TYPE + "=?",
                            new String[]{"image/jpeg", "image/png"}, IMAGE_PROJECTION[2] + " DESC");
                } else if (id == TYPE_VIDEO) {
                    cursorLoader = new CursorLoader(
                            activity, MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
                            VIDEO_PROJECTION, null, null, VIDEO_PROJECTION[2] + " DESC");
                }
                return cursorLoader;
            }

            @Override
            public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
                // 目录列表
                ArrayList<LocalMediaFolder> imageFolders = new ArrayList<LocalMediaFolder>();