这可能有点奇怪,但我无法弄清楚如何在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
}
}
答案 0 :(得分:1)
fetchBooks()
println(fetchedTags[0].name)
您在进行http调用后正在调用println(fetchedTags[0].name)
,因为此时列表为异步,所以此列表为空。
在onResponse
函数