Advertisement
Guest User

Untitled

a guest
Oct 1st, 2014
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.61 KB | None | 0 0
  1. public class FileManagerActivity extends Activity {
  2.     private ListView lvFileList;
  3.     private FileListAdapter mAdapter;
  4.  
  5.     private File mCurFile;
  6.  
  7.     @Override
  8.     protected void onCreate(Bundle savedInstanceState) {
  9.         super.onCreate(savedInstanceState);
  10.         setContentView(R.layout.activity_files);
  11.  
  12.         if (!Environment.getExternalStorageState().equals(
  13.                 Environment.MEDIA_MOUNTED)) {
  14.             Toast.makeText(this, "Cannot read external storage, sorry",
  15.                     Toast.LENGTH_SHORT).show();
  16.             finish();
  17.         }
  18.  
  19.         File sd = Environment.getExternalStorageDirectory();
  20.         mCurFile = sd;
  21.  
  22.         FileFilter filter = new FileFilter() {
  23.             @Override
  24.             public boolean accept(File pathname) {
  25.                 return pathname.isDirectory()
  26.                         || pathname.getName().endsWith(".mp3")
  27.                         || pathname.getName().endsWith(".MP3");
  28.             }
  29.         };
  30.  
  31.         File[] sdDirList = sd.listFiles(filter);
  32.  
  33.         lvFileList = (ListView) findViewById(R.id.lvFileList);
  34.  
  35.         mAdapter = new FileListAdapter(this, sdDirList);
  36.         lvFileList.setAdapter(mAdapter);
  37.  
  38.         lvFileList.setOnItemClickListener(new OnItemClickListener() {
  39.             @Override
  40.             public void onItemClick(AdapterView<?> parent, View view,
  41.                     int position, long id) {
  42.                 File file = mAdapter.getItem(position);
  43.                 if (file.isDirectory()) {
  44.                     mAdapter = new FileListAdapter(getApplicationContext(),
  45.                             file.listFiles());
  46.                     lvFileList.setAdapter(mAdapter);
  47.                     mCurFile = file;
  48.                 } else {
  49.                     Toast.makeText(getApplicationContext(),
  50.                             "Press \"Select this folder\"", Toast.LENGTH_SHORT)
  51.                             .show();
  52.                 }
  53.             }
  54.         });
  55.     }
  56.  
  57.     public void onClick(View v) {
  58.         switch (v.getId()) {
  59.         case R.id.btnSelectFolder:
  60.             SongsManager.get(this).setCurrentPlaylistFromFolder(mCurFile);
  61.             setResult(RESULT_OK);
  62.             finish();
  63.             break;
  64.         default:
  65.             break;
  66.         }
  67.     }
  68.  
  69.     private class FileListAdapter extends ArrayAdapter<File> {
  70.         private File[] mFiles;
  71.  
  72.         public FileListAdapter(Context context, File[] objects) {
  73.             super(context, 0, objects);
  74.             mFiles = objects;
  75.         }
  76.  
  77.         @Override
  78.         public File getItem(int position) {
  79.             return mFiles[position];
  80.         }
  81.  
  82.         @Override
  83.         public View getView(int position, View convertView, ViewGroup parent) {
  84.             if (convertView == null) {
  85.                 convertView = getLayoutInflater().inflate(
  86.                         R.layout.list_files_item, null, false);
  87.             }
  88.  
  89.             File file = mFiles[position];
  90.  
  91.             ((TextView) convertView.findViewById(R.id.tvName)).setText(file
  92.                     .getName());
  93.             int icon = file.isDirectory() ? R.drawable.ic_folder
  94.                     : R.drawable.ic_note;
  95.             ((ImageView) convertView.findViewById(R.id.ivIcon))
  96.                     .setImageResource(icon);
  97.  
  98.             return convertView;
  99.         }
  100.     }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement