private void onItemClicked(object sender, AdapterView.ItemClickEventArgs e) { Option o = currAdapter.GetItemAtPosition(e.Position); //may require casting if (string.Compare("Folder", o.getData()) == 0) { dirStack.Push(currentDir); currentDir = new DirectoryInfo(o.getPath()); currAdapter = fill(currentDir); aListView.Adapter = currAdapter; // // // // Instance of FILEARRAYADAPTER///////////////////////////////////////////////////////////// //Console.WriteLine("DIRECTORY"); } else if (string.Compare("Parent Directory", o.getData()) == 0) { //Console.WriteLine (dirStack.Count); if (dirStack.Count > 0) { currentDir = dirStack.Pop(); currAdapter = fill(currentDir); aListView.Adapter = currAdapter; } else { throw new NotImplementedException("Move up from highest directory"); } } else { onFileClick(o); } }
private FileArrayAdapter fill(DirectoryInfo dirInfo) { List <Option> dir = new List <Option> (); List <Option> fls = new List <Option> (); foreach (DirectoryInfo subDir in dirInfo.GetDirectories()) { dir.Add(new Option(subDir.Name, "Folder", subDir.FullName)); } foreach (FileInfo file in dirInfo.GetFiles()) { fls.Add(new Option( file.Name, "File Size: " + file.Length, file.FullName )); } // dir.Sort(); // fls.Sort(); dir.AddRange(fls); if (string.Compare(dirInfo.Name, "sdcard", false) != 0) //NOT the same { dir.Insert( 0, new Option("..", "Parent Directory", dirInfo.Parent.Name) ); } FileArrayAdapter adapter = new FileArrayAdapter( this, Resource.Layout.ListItem, dir ); return(adapter); // // // // Instance of FILEARRAYADAPTER }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.OpenFileDialog_l); aListView = FindViewById <ListView> (Resource.Id.list); aListView.ItemClick += onItemClicked; string state = Android.OS.Environment.ExternalStorageState; if (Android.OS.Environment.MediaMountedReadOnly.Equals(state) || Android.OS.Environment.MediaMounted.Equals(state)) //////////////////////////////////http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory%28%29 //currentDir = new DirectoryInfo ("/sdcard/DCIM/Camera/"); { currentDir = new DirectoryInfo(Android.OS.Environment.ExternalStorageDirectory + @"/DCIM/Camera/"); //SetTitle(//CHAR SEQUENCE!!!!! currentDir.Name) dirStack.Push(new DirectoryInfo(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath.ToString())); dirStack.Push(currentDir.Parent.Parent); dirStack.Push(currentDir.Parent); try { currAdapter = fill(currentDir); } catch (UnauthorizedAccessException ex) { Console.WriteLine("ex " + ex.Message); Console.WriteLine("Try turning on USB Mass Storage only, disconnecting and reconnecting usb, and then turning on USB Debugging mode."); } } else { Console.WriteLine("Media is not mounted."); } aListView.Adapter = currAdapter; }