首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓Java FileNameFilter

安卓Java FileNameFilter
EN

Stack Overflow用户
提问于 2016-02-28 21:49:42
回答 1查看 242关注 0票数 0

我在编程方面有一些问题。我有个小问题。我的任务:我必须扫描外部和内部的SD卡,检查是否存在扩展名为.mp3的文件,并在AlertDialog中显示此格式(扩展名)的所有文件的名称。请帮助我。代码:

代码语言:javascript
复制
private AlertDialog mIconSelectorDialog;

private String dir = "/storage/emulated/0/Music";
private String ext = ".mp3";
private static File[] listFiles;
private final static String[]list = new String[]{};
private final static String[]dirList = new String[]{};
AlertDialog.Builder builder;

    public static void findFiles(String dir,String ext){
    File file = new File(dir);
    listFiles = file.listFiles(new MyFileNameFilter(ext));

    for(File f : listFiles){
        dirList[dirList.length+1] = (dir+File.separator+f.getName());
    }
    for(File f : listFiles){
        list[list.length+1] = (f.getName());
    }
}
public static class MyFileNameFilter implements FilenameFilter {
    private String ext;
    public  MyFileNameFilter(String ext){
        this.ext = ext;
    }
    @Override
    public boolean accept(File dir , String name){
        return name.toLowerCase().contains(ext.toLowerCase());
    }
}
 public void musicSelector(View view){
    findFiles(dir,ext);
onCreateDialog();
    /*protected Dialog onCretateDialog(){
        builder = new AlertDialog.Builder(this);
        builder.setTitle("");
        builder.setItems(list, myClickListner());
        return builder.create();

    }*/
}


protected Dialog onCreateDialog() {

    builder = new AlertDialog.Builder(this);
    builder.setTitle("Choose your Sound"); // заголовок для диалога

    builder.setItems(list, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int item) {
            // TODO Auto-generated method stub
            sound = list[item];
            dirSound = dirList[item];
            Toast.makeText(getApplicationContext(),
                    "Your Song: " + list[item],
                    Toast.LENGTH_SHORT).show();
        }
    });
    builder.setCancelable(false);
    return builder.create();
}
EN

回答 1

Stack Overflow用户

发布于 2016-02-28 22:30:13

Java中的数组是固定大小的,它们不会自动扩展以容纳更多的值。您可以从一开始就创建大小合适的数组:

代码语言:javascript
复制
list = new String[listFiles.length];
for(int i=0; i<listFiles.length; i++){
    list[i] = listFiles[i].getName();
}

或者,您可以使用ArrayList

代码语言:javascript
复制
List<String> nameList = new ArrayList<String>();
for(File f : listFiles){
    nameList.add(f.getName());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35683329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档