如何从列表视图中获取特定文件onItemClick

时间:2017-08-23 09:47:21

标签: java android listview

我有一个包含两个文件的文件夹:一个pdf和一个xml。

当我点击文件夹时,我只想获取xml文件的路径。

使用我的代码(我在下面发布),我得到两个文件的路径。

谁能帮帮我? 谢谢!

 private ArrayList<String> GetFiles2(File f) {
        ArrayList<String> MyFiles = new ArrayList<String>();
        //File f = new File(DirectoryPath);

        f.mkdirs();
        File[] files = f.listFiles();
        if (files.length == 0)
            return null;
        else {
            for (int i=0; i<files.length; i++)
                MyFiles.add(files[i].getPath());
        }

        System.out.println("MYFILE:"+MyFiles);
        return MyFiles;

    }

我的结果:MYFILE:

`[/storage/emulated/0/ordinazioni/2/23_Agosto_2017_09_44_51_AM.xml,` /storage/emulated/0/ordinazioni/2/23_Agosto_2017_09_44_51_AM.pdf]

3 个答案:

答案 0 :(得分:1)

您可以使用覆盖版本的File#listFiles(FileFilter)从目录中获取特定文件。

    File[] files = f.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.getName().endsWith(".xml");
        }
    }); 

完全实施:

private ArrayList<String> getXmlFiles(File directory) {
    ArrayList<String> names = new ArrayList<>();
    directory.mkdirs();
    File[] files = directory.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.getName().endsWith(".xml");
        }
    });
    for(File f : files)
        names.add(f.getPath());

    System.out.println("MYFILE:" + names);
    return files.length > 0 ? names : null;
}

无论如何,我建议您返回null的空列表,以避免NPE问题(仅return names

答案 1 :(得分:0)

您可以更改for - 循环,例如:

for (int i=0; i<files.length; i++) {
    if(files[i].getPath().endsWith(".xml")) {
        MyFiles.add(files[i].getPath());
    }
}

这将仅在MyFiles列表中添加praticular文件夹中的xml文件的路径

答案 2 :(得分:0)

要获取特定文件位置,请使用此代码

File dir = Environment.getExternalStorageDirectory();
File yourFile = new File(dir, "path/to/the/file/inside/the/sdcard.ext");

例如;

"/AAlist/"+serialno.get(position).trim()+".jpg"