2013-03-30 3 views
1

Я создаю приложение для Android, которое будет искать через каталог, захватить все файлы, которые заканчиваются на .mp3, и добавить их в список массивов. У меня есть стартовая точка в/sdcard /, но не все музыкальные файлы находятся непосредственно на этом пути. Остальные находятся в/sdcard/Music/(artist)/.... Я пытаюсь заставить свой FilenameFilter продолжить работу с подкаталогами, а затем добавить его в список. Вот код, который я работаю с:FilenameFilter через подкаталоги в Java

class Mp3Filter implements FilenameFilter{ 
    public boolean accept(File dir, String name){ 
     return(name.endsWith(".mp3")&& dir.isDirectory()); 
    } 

    private void updatePlaylist() { 
     File home = new File(SD_PATH); 
     if(home.listFiles(new Mp3Filter()).length>0){ 
      for(File file : home.listFiles(new Mp3Filter())){ 
       songs.add(file.getName()); 
      } 
      ArrayAdapter<String> songList = new ArrayAdapter<String>(this,R.layout.song_item, songs); 
      setListAdapter(songList); 
     } 
    } 
} 

ответ

0

рекурсивный вызов, как это:

private void updatePlaylist() { 
    File home = new File(SD_PATH); 
    addToSongs(home); 
    if(songs.length>0){ 

    ArrayAdapter<String> songList = new ArrayAdapter<String>(this,R.layout.song_item, songs); 
    setListAdapter(songList); 
    } 

} 

private void addToSongs(home) 
    for(File file : home.listFiles(new Mp3Filter())){ 

    if(file.isDirectory()){ 
    //recursive call 
    addToSongs(file); 
    } else{ 
    songs.add(file.getName());` 
    } 
} 
+0

Там не было никаких ошибок, но это не добавить больше песен или папки. Есть ли способ показать папку? Не обязательно пустые файлы .mp3 из папки, но просто покажите папку и сможете перемещаться по ней вручную? – Uthayne

Смежные вопросы