Lista de archivos en la carpeta de activos y sus subcarpetas

Tengo algunas carpetas con archivos HTML en la carpeta "assets" en mi proyecto de Android. Necesito mostrar estos archivos HTML de las subcarpetas de los activos en una lista. Ya escribí algún código para hacer esta lista.

lv1 = (ListView) findViewById(R.id.listView); // Insert array in ListView // In the next row I need to insert an array of strings of file names // so please, tell me, how to get this array lv1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, filel)); lv1.setTextFilterEnabled(true); // onclick items in ListView: lv1.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> a, View v, int position, long id) { //Clicked item position String itemname = new Integer(position).toString(); Intent intent = new Intent(); intent.setClass(DrugList.this, Web.class); Bundle b = new Bundle(); //I don't know what it's doing here b.putString("defStrID", itemname); intent.putExtras(b); //start Intent startActivity(intent); } }); 

 private boolean listAssetFiles(String path) { String [] list; try { list = getAssets().list(path); if (list.length > 0) { // This is a folder for (String file : list) { if (!listAssetFiles(path + "/" + file)) return false; } } else { // This is a file // TODO: add file name to an array list } } catch (IOException e) { return false; } return true; } 

Llame al listAssetFiles con el nombre de la carpeta raíz de su carpeta de activos.

  listAssetFiles("root_folder_name_in_assets"); 

Si la carpeta raíz es la carpeta de recursos, llámela con

  listAssetFiles(""); 

Prueba esto funcionará en tu caso

 f = getAssets().list(""); for(String f1 : f){ Log.v("names",f1); } 

El fragmento anterior mostrará el contenido de la raíz del recurso.

Por ejemplo … si debajo es la estructura del activo ..

 assets |__Dir1 |__Dir2 |__File1 

La salida del fragmento será …. Dir1 Dir2 File1

Si necesita el contenido del Directorio Dir1

Pase el nombre de directorio en la función de lista.

  f = getAssets().list("Dir1"); 

Espero que esto ayude:

El siguiente código copiará toda la carpeta y su contenido y contenido de la subcarpeta a la ubicación del sdcard:

  private void getAssetAppFolder(String dir) throws Exception{ { File f = new File(sdcardLocation + "/" + dir); if (!f.exists() || !f.isDirectory()) f.mkdirs(); } AssetManager am=getAssets(); String [] aplist=am.list(dir); for(String strf:aplist){ try{ InputStream is=am.open(dir+"/"+strf); copyToDisk(dir,strf,is); }catch(Exception ex){ getAssetAppFolder(dir+"/"+strf); } } } public void copyToDisk(String dir,String name,InputStream is) throws IOException{ int size; byte[] buffer = new byte[2048]; FileOutputStream fout = new FileOutputStream(sdcardLocation +"/"+dir+"/" +name); BufferedOutputStream bufferOut = new BufferedOutputStream(fout, buffer.length); while ((size = is.read(buffer, 0, buffer.length)) != -1) { bufferOut.write(buffer, 0, size); } bufferOut.flush(); bufferOut.close(); is.close(); fout.close(); } 
  • Android assetManager
  • Android obtener Bitmap o sonido de los activos
  • Cómo proteger los activos almacenados en Android APK
  • Creación de activos de imagen en Android Studio
  • AndroidPDFViewer - No se puede abrir el documento pdf en mi aplicación
  • Seguridad de activos en Android
  • GetAssets (); De otra clase
  • Activos de Android sin contexto
  • ¿Cómo hacer referencia a los "activos" de Android a través de paquetes?
  • Android google signin y facebook inicio de sesión botón de mirar completamente diferente
  • ¿Cómo puedo transferir un dispositivo de prueba de base de datos al dispositivo desde mi aplicación de prueba de unidad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.