Получение данных из функции переопределения - PullRequest
0 голосов
/ 25 апреля 2018

Это может быть немного странно, но я не могу понять, как передавать данные после вызова 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 голосов
/ 25 апреля 2018
fetchBooks()
println(fetchedTags[0].name)

Вы звоните println(fetchedTags[0].name) сразу после выполнения http-вызова, так как он асинхронный, на данный момент ваш список является нулевым.

вызовите его на onResponse функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...