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.getExternalStorageDirectory().getAbsolutePath() + "/Mypath");
行遇到错误,它说 java.io.file
无法转换为 java.io.string
。我该如何解决这个问题,我在谷歌上搜索了几个小时,但我真的找不到解决方案
最佳答案
使用带两个参数的 File 构造函数。第一个是目录,第二个是文件名或目标目录的名称
list = imageReader(new File(Environment.getExternalStorageDirectory(), "Mypath"))
这样系统也会处理分隔符。还要注意
listFiles()
可以返回 null。所以你应该在开始循环之前检查空值
关于java - 不兼容类型 : String cannot be converted to File,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32986029/