美好的一天。我遇到这样的问题:我有 DialogBrowser 打开 fileBrowser,我想将所有带有 .mp3 格式的文件从选定目录获取到我的 ArrayList mySongs。但我不明白该怎么做。这是 mp3 播放器,接下来是我的代码:
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();
最佳答案
在所选目录对象的 for 循环函数中使用 listFiles(FILE_FILTER)
,其中 FILE_FILTER 是一个 FilenameFilter
对象。在您的情况下,创建一个过滤器,它将检查扩展名是否为“.mp3”。然后将每个文件添加到 ArrayList
。
关于java - 如何将选定目录中的文件放入arraylist Android studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38692759/