从覆盖功能获取数据

时间:2018-04-25 03:01:08

标签: android kotlin

这可能有点奇怪,但我无法弄清楚如何在API调用后传递数据。我是面向对象编程的新手。

fetchedTags调用后

fetchTags()为空。我如何获取数据?

例如:

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

    }
}

1 个答案:

答案 0 :(得分:1)

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

您在进行http调用后正在调用println(fetchedTags[0].name),因为此时列表为异步,所以此列表为空。

onResponse函数

上调用它