我正在尝试使用此功能从文件夹中获取图像列表
var gpath:String = Environment.getExternalStorageDirectory().absolutePath
var spath = "testfolder"
var fullpath = File(gpath + File.separator + spath)
var list = imageReader(fullpath)
fun imageReader(root : File):ArrayList<File>{
val a : ArrayList<File> ? = null
val files = root.listFiles()
for (i in 0..files.size){
if (files[i].name.endsWith(".jpg")){
a?.add(files[i])
}
}
return a!!
}
但我有以下例外:
- 数组索引超出范围异常:长度=3;指数=3*
- 返回值异常 *
我读过这个问题,但我不知道如何解决它,
有什么需要帮忙的吗?
4条答案
按热度按时间mzsu5hc01#
对于 Null Pointer,您可能需要在
var list = imageReader(path)
中更改并传递 fullpath,而不是 path。错了
对
编辑1
我对函数做了一些修改,并将其应用于 override fun onCreate 中,如下所示。
功能
Logcat输出
drnojrws2#
nxagd54h3#
上面的答案是正确的,但是它声明
a
为null
,然后在循环中使用null
保存。因此,它检测图像,但不将它们添加到列表中,列表返回null。b1zrtrql4#
通过使用MediaStore,我们可以实现一个文件夹内的图像计数,我们将添加一个检查,以防止获得当前文件夹的子文件夹的图像。
这个函数将返回一个整数值,它是文件夹中图像文件的总数,我们使用not like操作符,并将%/%添加到selectionArgs数组中,以选择路径不包含子目录的所有文件。