// Path: android/ijkplayer/ijkplayer-example/src/main/java/tv/danmaku/ijk/media/example/content/PathCursorLoader.java
// public class PathCursorLoader extends AsyncTaskLoader<Cursor> {
//     private File mPath;
// 
//     public PathCursorLoader(Context context) {
//         this(context, Environment.getExternalStorageDirectory());
//     }
// 
//     public PathCursorLoader(Context context, String path) {
//         super(context);
//         mPath = new File(path).getAbsoluteFile();
//     }
// 
//     public PathCursorLoader(Context context, File path) {
//         super(context);
//         mPath = path;
//     }
// 
//     @Override
//     public Cursor loadInBackground() {
//         File[] file_list = mPath.listFiles();
//         return new PathCursor(mPath, file_list);
//     }
// 
//     @Override
//     protected void onStartLoading() {
//         forceLoad();
//     }
// }
// 
// Path: android/ijkplayer/ijkplayer-example/src/main/java/tv/danmaku/ijk/media/example/eventbus/FileExplorerEvents.java
// public class FileExplorerEvents {
//     private static final Bus BUS = new Bus();
// 
//     public static Bus getBus() {
//         return BUS;
//     }
// 
//     private FileExplorerEvents() {
//         // No instances.
//     }
// 
//     public static class OnClickFile {
//         public File mFile;
// 
//         public OnClickFile(String path) {
//             this(new File(path));
//         }
// 
//         public OnClickFile(File file) {
//             mFile = file;
//         }
//     }
// }


import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.io.File;
import tv.danmaku.ijk.media.example.R;
import tv.danmaku.ijk.media.example.content.PathCursor;
import tv.danmaku.ijk.media.example.content.PathCursorLoader;
import tv.danmaku.ijk.media.example.eventbus.FileExplorerEvents;
        ViewGroup viewGroup = (ViewGroup) inflater.inflate(R.layout.fragment_file_list, container, false);
        mPathView = (TextView) viewGroup.findViewById(R.id.path_view);
        mFileListView = (ListView) viewGroup.findViewById(R.id.file_list_view);

        mPathView.setVisibility(View.VISIBLE);

        return viewGroup;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        Activity activity = getActivity();

        Bundle bundle = getArguments();
        if (bundle != null) {
            mPath = bundle.getString(ARG_PATH);
            mPath = new File(mPath).getAbsolutePath();
            mPathView.setText(mPath);
        }

        mAdapter = new VideoAdapter(activity);
        mFileListView.setAdapter(mAdapter);
        mFileListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position, final long id) {
                String path = mAdapter.getFilePath(position);
                if (TextUtils.isEmpty(path))
                    return;
// Path: android/ijkplayer/ijkplayer-example/src/main/java/tv/danmaku/ijk/media/example/content/PathCursorLoader.java
// public class PathCursorLoader extends AsyncTaskLoader<Cursor> {
//     private File mPath;
// 
//     public PathCursorLoader(Context context) {
//         this(context, Environment.getExternalStorageDirectory());
//     }
// 
//     public PathCursorLoader(Context context, String path) {
//         super(context);
//         mPath = new File(path).getAbsoluteFile();
//     }
// 
//     public PathCursorLoader(Context context, File path) {
//         super(context);
//         mPath = path;
//     }
// 
//     @Override
//     public Cursor loadInBackground() {
//         File[] file_list = mPath.listFiles();
//         return new PathCursor(mPath, file_list);
//     }
// 
//     @Override
//     protected void onStartLoading() {
//         forceLoad();
//     }
// }
// 
// Path: android/ijkplayer/ijkplayer-example/src/main/java/tv/danmaku/ijk/media/example/eventbus/FileExplorerEvents.java
// public class FileExplorerEvents {
//     private static final Bus BUS = new Bus();
// 
//     public static Bus getBus() {
//         return BUS;
//     }
// 
//     private FileExplorerEvents() {
//         // No instances.
//     }
// 
//     public static class OnClickFile {
//         public File mFile;
// 
//         public OnClickFile(String path) {
//             this(new File(path));
//         }
// 
//         public OnClickFile(File file) {
//             mFile = file;
//         }
//     }
// }


// Path: android/ijkplayer/ijkplayer-example/src/main/java/tv/danmaku/ijk/media/example/fragments/FileListFragment.java
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.io.File;
import tv.danmaku.ijk.media.example.R;
import tv.danmaku.ijk.media.example.content.PathCursor;
import tv.danmaku.ijk.media.example.content.PathCursorLoader;
import tv.danmaku.ijk.media.example.eventbus.FileExplorerEvents;

        ViewGroup viewGroup = (ViewGroup) inflater.inflate(R.layout.fragment_file_list, container, false);
        mPathView = (TextView) viewGroup.findViewById(R.id.path_view);
        mFileListView = (ListView) viewGroup.findViewById(R.id.file_list_view);

        mPathView.setVisibility(View.VISIBLE);

        return viewGroup;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        Activity activity = getActivity();

        Bundle bundle = getArguments();
        if (bundle != null) {
            mPath = bundle.getString(ARG_PATH);
            mPath = new File(mPath).getAbsolutePath();
            mPathView.setText(mPath);
        }

        mAdapter = new VideoAdapter(activity);
        mFileListView.setAdapter(mAdapter);
        mFileListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position, final long id) {
                String path = mAdapter.getFilePath(position);
                if (TextUtils.isEmpty(path))
                    return;
                FileExplorerEvents.getBus().post(new FileExplorerEvents.OnClickFile(path));