这可能有点奇怪,但是我不知道如何在API调用后传递数据。我是面向对象编程的新手。
fetchedTags调用之后,fetchTags()为null。如何获取数据?

例如:

class MainActivity : AppCompatActivity() {

    var fetchedTags: List<Tags>? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        fetchTags()
        println(fetchedTags[0].name)
        fetchBooks()
        makeMapOutOfTagsAndBooks()
    }



    fun fetchTags () {
        //some processing
        val request = Request.Builder().url(url).build()

        client.newCall(request).enqueue(object : Callback {
            override fun onResponse(call: Call?, response: Response?) {
                val jsonData = response?.body()?.string()
                val gson = GsonBuilder().setPrettyPrinting().create()
                val tagList: List<Tags> = gson.fromJson(jsonData, object : TypeToken<List<Tags>>() {}.type)
                fetchedTags = tagList

    }
}

最佳答案

fetchBooks()
println(fetchedTags[0].name)

您在进行http调用后立即调用println(fetchedTags[0].name),因为它是异步的,此时您的列表为空。

onResponse函数上调用它

10-06 10:47