列出sdcard - android的所有文件夹或子文件夹中具有特定扩展名的所有文件

时间:2015-10-06 20:30:34

标签: android android-listview

这可能看起来像一个老问题,但我已经尝试了所有解决方案,这似乎对我没有用。我使用以下代码列出我的ListView中扩展名为.docx的所有文件。但是,由于某种原因,这不能正常工作,只列出root下的所有文件。

on onCreate:

view = (LinearLayout) findViewById(R.id.view);

    //getting SDcard root path
    root = new File(Environment.getExternalStorageDirectory()
            .getAbsolutePath());
    getfile(root);

    for (int i = 0; i < fileList.size(); i++) {
        TextView textView = new TextView(this);
        if(!fileList.get(i).isDirectory() & fileList.get(i).getName().endsWith(".docx") || fileList.get(i).getName().endsWith(".doc")) {
            textView.setText((i+1)+". "+fileList.get(i).getName());

            Toast.makeText(this, fileList.get(j).getAbsolutePath(),Toast.LENGTH_LONG).show();
            textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                     .....
                }
            });
            view.addView(textView);
        }
        else { 
            getfile( new File(fileList.get(i).getAbsolutePath()));  // its directory so similar code but new filelist instance
            for (int k = 0; k < fileList.size(); k++) {
                //TextView textView = new TextView(this);
                if(!fileList.get(k).isDirectory() & fileList.get(k).getName().endsWith(".docx") || fileList.get(k).getName().endsWith(".doc")) {
                    textView.setText((k+1)+". "+fileList.get(i).getName());

                    Toast.makeText(this, fileList.get(j).getAbsolutePath(),Toast.LENGTH_LONG).show();
                    textView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                          ...
                        }
                    });
                    view.addView(textView);
                }
                else {

                }

            }
        }

getFile ArrayList函数:

public ArrayList<File> getfile(File dir) {
    File listFile[] = dir.listFiles();
    if (listFile != null && listFile.length > 0) {
        for (int i = 0; i < listFile.length; i++) {

            if (listFile[i].isDirectory()) {

            } else {
                if (listFile[i].getName().endsWith(".docx")
                        || listFile[i].getName().endsWith(".doc"))
                {
                    fileList.add(listFile[i]);
                }
            }

        }
    }
    return fileList;
}

0 个答案:

没有答案