public int compare(MyFile left, MyFile right) { if (left.isDirectory()) { if (right.isDirectory()) { return left.compareTo(right); } return -1; } return right.isDirectory() ? 1 : left.compareTo(right); }
private void showDirectoryContentsUI() { // Fijamos el directorio actual. iCurrentPath = iLoadingPathname; // Visualizamos el nombre del directorio actual. iFolderNameText.setText(iCurrentPath + "/"); // Eliminamos la lista de ficheros antiguos. iFilesList.clear(); // Si no estamos en el directorio raíz, añadimos como primer elemento // ir al directorio anterior. if (!iCurrentPath.equals("")) { iFilesList.add( createListViewItem(getResources().getString(R.string.folder_up), R.drawable.folder_up)); } // Inicializamos la lista de ficheros. for (MyFile child : iChilds) iFilesList.add( createListViewItem( child.getName(), child.isDirectory() ? R.drawable.folder : R.drawable.file)); // Visualizamos la lista. iAdapterList.notifyDataSetChanged(); iListView.setAdapter(iAdapterList); }
private int _showDirectoryContents() { // Obtenemos los ficheros del directorio recibido como parámetro. if (iShellExecutor.execute("ls -l " + iLoadingPathname + "/")) { List<String> output = iShellExecutor.getStandardOutput(); if (output == null) { // No podemos visualizar el mensaje de error aquí. // Sólo en el flujo principal... return 1; } // Mostramos el contenido. // Mostraremos los directorios siempre y los ficheros sólo si "iShowPlainFiles" es true // (es decir, si no estamos en la pantalla de selección del directorio raíz)... iChilds.clear(); for (String line : output) { MyFile child = new MyFile(line); if ((iShowPlainFiles) || (child.isDirectory())) iChilds.add(child); } // Ordenamos la lista de ficheros. // teniendo en cuenta cómo quiere verlos el usuario (si primero los directorios o no)... if (PreferenceManager.getDefaultSharedPreferences(this) .getBoolean("list_folders_first", true)) { Collections.sort(iChilds, iComparatorFoldersUp); iFoldersUp = true; } else { Collections.sort(iChilds, iComparatorFoldersNotUp); iFoldersUp = false; } } // Devolvemos 0 para indicar que el directorio debe visualizarse... return 0; }