这可能有点奇怪,但是我不知道如何在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
函数上调用它