我想单击活动中的按钮并打开一个单独的活动,该活动显示我想要访问的文件夹的arraylist。因此,进入下一个活动的代码很简单(以意图开始新活动)。但是,我想在arraylist中显示此新活动中文件夹的内容。
此内容的路径位于我的设备的内部存储空间(不是外部/ SD卡存储空间)。
我想显示以下目录中的文件
/存储/模拟/ 0 / Android设备/数据/ COM ... /文件/
com ...是一个虚假的路径名,只是为了说明有一个包名。
所以底线是我想在新活动的arraylist中显示文件(文本文件或图片等)中的内容。每当我尝试使用“文件”指向此路径时,它不会显示arraylist,而是显示空白屏幕。
例如:
String path = "/storage/emulated/0/Android/data/com.../files/";
File dir = new File(path);
List values = new ArrayList();
String[] list = dir.list();
if (list != null) {
for (String file : list) {
if (!file.startsWith(".")) {
values.add(file);
}
}
}
Collections.sort(values);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_2, android.R.id.text1, values);
setListAdapter(adapter);
答案 0 :(得分:0)
我的解决方案如下。我也无法使用我从下面的代码中看到的文件来实现FileInputStream。通过获取子字符串,我可以获取文件名,但是当我使用FileInputStream时,我很难读取它。我的例外是在这行代码上抛出的。
FileInputStream in = openFileInput(“test.txt”);
我对实际问题的解决方案。
在oncreate内部
lvFiles = (ListView)findViewById(R.id.listViewFiles);
String path = "/storage/emulated/0/Android/data/com.../files/";
try {
List<File> files = getListFiles(new File(path));
String[] namesOfFiles = new String[files.size()];
for (int i = 0; i < files.size(); i++) {
namesOfFiles[i] = files.get(i).toString();
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.filetextview, namesOfFiles);
lvFiles.setAdapter(arrayAdapter);
//lvFiles.setAdapter(new CustomAdapterArrayAdapter(FilesList.this, files));
}
catch (Exception e)
{
}
onCreate的内部结束。将其放入onCreate中,以便在打开页面后立即填充列表视图。
getListFiles方法启动
private List<File> getListFiles(File parentDir)
{
ArrayList<File> inFiles = new ArrayList<File>();
File[] files = parentDir.listFiles();
for (File file : files) {
//if (file.getName().endsWith(".txt"))
if (file.isDirectory()) {
inFiles.addAll(getListFiles(file));
} else {
if(file.getName().endsWith(".txt")){
inFiles.add(file);
}
}
}
return inFiles;
}
getListFiles方法结束。