这可能看起来像一个老问题,但我已经尝试了所有解决方案,这似乎对我没有用。我使用以下代码列出我的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;
}