¿Cómo mostrar archivos en la tarjeta SD en un ListView?

Me gustaría crear un botón que al hacer clic en ir a una clase que muestra todos los archivos multimedia de una tarjeta SD con un ListView .

Después de seleccionar de la lista, entonces devolverá el nombre de archivo seleccionado a la clase principal. Si el archivo devuelto es un archivo de imagen, se mostrará en un ImageView y si el archivo devuelto es un archivo de audio, sólo mostrará un icono.

6 Solutions collect form web for “¿Cómo mostrar archivos en la tarjeta SD en un ListView?”

Agregue un método GetFiles() a su programa. Llámelo para obtener una ArrayList<> de todos los archivos. A continuación, puede utilizarlo para rellenar su lista. Necesita proporcionar el argumento de cadena DirectoryPath .

La función:

 public ArrayList<String> GetFiles(String DirectoryPath) { ArrayList<String> MyFiles = new ArrayList<String>(); File f = new File(DirectoryPath); f.mkdirs(); File[] files = f.listFiles(); if (files.length == 0) return null; else { for (int i=0; i<files.length; i++) MyFiles.add(files[i].getName()); } return MyFiles; } 

Ejemplo de uso:

 @Override public void onCreate() { // Other Code ListView lv; ArrayList<String> FilesInFolder = GetFiles("/sdcard/somefolder"); lv = (ListView)findViewById(R.id.filelist); lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, FilesInFolder)); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // Clicking on items } }); } 

Asegúrese de que el almacenamiento externo es legible: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

Para filtrar archivos basados ​​en Nombre / Extensión: ¿Cómo acceder a sdcard y devolver y arreglar con archivos de un formato específico?

En primer lugar le sugiero que lea algunos tutoriales sobre android primero para que obtenga los conceptos básicos. Tienes que implementar lo siguiente para hacer esto

  1. Listar todos los archivos multimedia – ¿Cómo enumerar todos los medios en Android?
  2. Iniciar nueva Actividad
  3. Android: Captura del retorno de una actividad
 File mfile=new File("/sdcard"); File[] list=mfile.listFiles(); System.out.println("list"+mfile.listFiles().length); for(int i=0;i<mfile.listFiles().length;i++) { if(list[i].isHidden()) } System.out.println("hidden path files.."+list[i].getAbsolutePath()); } } 

Puede esto ayudaría !!!

 public class FileActivity extends ListActivity { String str; ArrayList<String> al; ArrayAdapter<String> adapter; ListView lv; @SuppressLint("SdCardPath") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.file_view); Intent int1=getIntent(); ArrayList<String> arr1=GetFiles(Environment.getExternalStorageDirectory().getPath()); adapter= new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_expandable_list_item_1,arr1); lv = (ListView) findViewById(android.R.id.list); lv.setAdapter(adapter); } private ArrayList<String> GetFiles(String path) { ArrayList<String> arr2=new ArrayList<String>(); File file=new File(path); File[] allfiles=file.listFiles(); if(allfiles.length==0) { return null; } else { for(int i=0;i<allfiles.length;i++) { arr2.add(allfiles[i].getName()); } } return arr2; } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); } 

Función actualizada :: use esto para nuevos apis

Llamada así:

  searchForFileInExternalStorage("filename.ext"); 

@implementación

  public File searchForFileInExternalStorage(String filename) { File storage = Environment.getExternalStorageDirectory(); return searchForFileInFolder(filename, storage); } public File searchForFileInFolder(String filename, File folder) { File[] children = folder.listFiles(); File result; for (File child : children) { if (child.isDirectory()) { result = searchForFileInFolder(filename, child); if (result != null) { return result; } } else { // replace equals by equalsIgnoreCase if you want to ignore the // case of the file name if (child.getName().equals(filename)) { return child; } } } return null; } 

Esta es una solución correcta para usted! O le doy un acoplamiento para esta materia!

 public class SongsManager { // SDCard Path //choose your path for me i choose sdcard final String MEDIA_PATH = new String("/sdcard/"); private ArrayList<hashmap<string, string="">> songsList = new ArrayList<hashmap<string, string="">>(); // Constructor public SongsManager(){ } /** * Function to read all mp3 files from sdcard * and store the details in ArrayList * */ public ArrayList<hashmap<string, string="">> getPlayList(){ File home = new File(MEDIA_PATH); if (home.listFiles(new FileExtensionFilter()).length > 0) { for (File file : home.listFiles(new FileExtensionFilter())) { HashMap<string, string=""> song = new HashMap<string, string="">(); song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4))); song.put("songPath", file.getPath()); // Adding each song to SongList songsList.add(song); } } // return songs list array return songsList; } /** * Class to filter files which are having .mp3 extension * */ //you can choose the filter for me i put .mp3 class FileExtensionFilter implements FilenameFilter { public boolean accept(File dir, String name) { return (name.endsWith(".mp3") || name.endsWith(".MP3")); } } } 
  • Almacenar imagen de mapa de bits en tarjeta SD en Android
  • Buscar una ubicación de tarjeta SD externa
  • Permiso para escribir en la tarjeta SD android
  • Puede cargar dll android de sdcard en modo nativo
  • Servidor FTP de Android
  • ¿Cómo usar SQLiteOpenHelper con la base de datos en sd-card?
  • ¿Dónde almacena el emulador de Android los archivos de la tarjeta SD?
  • ¿Cómo puedo recuperar el número de serie de una tarjeta SD en Android 7.0+?
  • ¿Por qué no se puede escribir en mi tarjeta SD (Android)?
  • No se puede mover una aplicación a la tarjeta SD
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.