I’m trying to list all folders in sdcard via ListAdapter. But I’m getting runtime exceptions @ item.add(file.getName() + "/");. Is there a better way to convert File[] to List<String>?
private List <String> item = null;
String extState = Environment.getExternalStorageState();
if (!extState.equals(Environment.MEDIA_MOUNTED)) {
....
} else {
File sd = Environment.getExternalStorageDirectory();
FileFilter filterDirectoriesOnly = new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();
}
};
File[] sdDirectories = sd.listFiles(filterDirectoriesOnly);
for (int i = 0; i < sdDirectories.length; i++) {
File file = sdDirectories[i];
item.add(file.getName() + "/");
}
ArrayAdapter <String> fileList = new ArrayAdapter <String>(this, R.layout.row, item);
setListAdapter(fileList);
}
You can make it a little shorter by using an enhanced for loop:
There’s a method to get file names directly, but they won’t have your trailing
/, and you have to be able to filter by file name: