Android Studio 无法返回添加到改进入队方法中的阵列列表[重复]

xjreopfe  于 2023-10-23  发布在  Android
关注(0)|答案(1)|浏览(100)

此问题已在此处有答案

Why does my function that calls an API or launches a coroutine return an empty or null value?(4个答案)
23天前关闭
我试着把数组添加到一个数组中,里面有一个改进的排队方法。但它不返回数组。我有下面的代码。我不知道我犯了什么错误。

private fun getAllAudio():ArrayList<Music>{
    val templList = ArrayList<Music>()
    val service = SongFactory.makeSongLists()
    val response = service.getAllSongs()
    response.enqueue(object :Callback<ArrayList<Music>>{
        override fun onResponse(
            call: Call<ArrayList<Music>>,
            response: Response<ArrayList<Music>>
        ) {
            response.body()?.let {
                for (items in it){
                    var music = Music(items.album,items.artist,items.duration,items.id,items.path,items.songuri,items.title)
                    templList.add(music)
                }
            }
        }

        override fun onFailure(call: Call<ArrayList<Music>>, t: Throwable) {
            Toast.makeText(this@MainActivity, "Error ${t.message}", Toast.LENGTH_SHORT).show()
        }

    })
    Log.d("get",templList.toString())
    return templList
}

我试着记录我的结果,它显示[]

z3yyvxxp

z3yyvxxp1#

你必须在onResponse()函数中返回templList,因为reflect需要几毫秒的时间,但这里你返回的是空列表而没有得到响应。

相关问题