2016-08-01 45 views
1

美好的一天。我有這樣的問題:我有打開fileBrowser的DialogBrowser,我想要.mp3表單選定目錄中的所有文件到我的ArrayList mySongs。但我不明白它是如何做到的。這是MP3播放器和明年我的代碼:如何把文件從arraylist Android工作室的選定目錄

public class MainActivity extends AppCompatActivity { 
ListView lv; 
String[] items; 
FetchSongs fs; 
ArrayList<File> mySongs; 
ProgressDialog dialog; 
ImageView browser; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.content_main); 
    lv=(ListView)findViewById(R.id.listView); 
    browser = (ImageView) findViewById(R.id.browser); 

    fs=new FetchSongs(); 
    dialog=new ProgressDialog(this); 
    dialog.setMessage("Подождите пожалуйста, идет загрузка песен..."); 
    dialog.setCancelable(true); 
    dialog.show(); 

    //Если песни не загружены или не найдены: 
    while(fs.getfetchstatus()!=true){ 
     mySongs=fs.findSongs(Environment.getExternalStorageDirectory()); 
    } 
    if(mySongs!=null){ 
     dialog.dismiss(); 
    } 

    mySongs = fs.getsonglist(); 

    //Инициализируем наш массив куда поместим все песни для ЛистВью 
    items= new String[mySongs.size()]; 
    for (int i=0;i<mySongs.size();i++){ 
     items[i]=mySongs.get(i).getName().toString().replace(".mp3",""); 
    } 
    //Назначаем адаптер для ЛистВью с массивом из найденных песен, и передаем их все на следующий активити 
    ArrayAdapter<String> adp= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items); 
    lv.setAdapter(adp); 
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      Intent intent=new Intent(getApplicationContext(),Player.class); 
      intent.putExtra("pos",i); 
      startActivity(intent); 
      finish(); 
     } 
    }); 
} 

public void onClickBtn (View v) { 

    File mPath = new File(Environment.getExternalStorageDirectory() + "//DIR//"); 
    FileDialog fileDialog = new FileDialog(this, mPath); 
    fileDialog.setFileEndsWith(new String[]{".mp3"}); // здесь в массив желаемые типы файлов. 

    // а это выбор папки 
    fileDialog.addDirectoryListener(new FileDialog.DirectorySelectedListener() { 
     @Override 
     public void directorySelected(File directory) { 


     } 
    }); 

     fileDialog.setSelectDirectoryOption(false); 
     fileDialog.showDialog(); 

回答

1

使用listFiles(FILE_FILTER)內選定的目錄對象,其中FILE_FILTER是FilenameFilter對象循環功能。你的情況創建一個過濾器,將檢查擴展名是「.mp3」。然後將每個文件添加到ArrayList

+0

你能打字的例子嗎? – Slavik