java - 如何将选定目录中的文件放入arraylist Android studio

标签 java android

美好的一天。我遇到这样的问题:我有 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/

相关文章:

java 带有装饰器模式的条件日志记录

java - 将 "get/check/put"替换为 putIfAbsent

java - 如何使用Java代码在Android中将复选框添加到 'Grid View'

android - GPS 位置如何可信?

android - 尝试将 BaseGameUtils 添加到 android studio 中的 LibGdx 项目

java - 如何序列化 android.location 类?

java - windowClosing() 并抛出异常

java - 如何创建一个 ASM LdcInsnNode 将当前类静态添加到堆栈中?

java - 如何通过修改结构来反序列化Json?

java - 如何修复 Android 的 distanceBetween 方法语法?