GridView gv;
ArrayList<File> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_yearbook);
list = imageReader (Environment.getExternalStorageDirectory().getAbsolutePath() + "/Mypath");
gv = (GridView) findViewById(R.id.ImageGV);
gv.setAdapter(new GridAdapter());
}
ArrayList<File> imageReader(File root) {
ArrayList<File> a = new ArrayList<>();
File[] files = root.listFiles();
for (int i =0; i< files.length; i++) {
if (files[i].isDirectory()) {
a.addAll(imageReader(files[i]));
}
else {
if ( files[i].getName().endsWith(".jpg")) {
a.add(files[i]);
}
}
}
return a;
}
所以我试图让我的imageReader
读取sdcard
中的某个目录,以在我的程序中显示一系列图像。但是,我在第list = imageReader (Enviroment.getExternalStorageDirecctory().getAbsolutePath() + "/Mypath");
行遇到错误,它表示java.io.file
无法转换为java.io.string
。我如何解决这个问题,我用谷歌搜索了几个小时,我真的找不到解决方案
答案 0 :(得分:1)
这应该有效
list = imageReader(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Mypath"));
答案 1 :(得分:1)
使用带有两个参数的File的构造函数。第一个是目录,第二个是文件名或目标目录的名称
list = imageReader(new File(Environment.getExternalStorageDirectory(), "Mypath"))
这样,系统也会处理分隔符。还要注意
listFiles()
可以返回null。所以你应该在开始循环之前检查空值
答案 2 :(得分:0)
尝试这样(你也需要处理异常):
try{
list = imageReader(new File(Environment.getExternalStorageDirectory(), "Mypath"));
}catch(FileNotFoundException ex){
//ex handler code
}