Как получить значение из асин Анко c? (KotlIn) - PullRequest
0 голосов
/ 09 марта 2020

У меня есть функция, которая использует Anko's asyn c для вызова API расстояния Google и получения расстояния от одного местоположения до другого. к сожалению, я не знаю, как получить данные из asyn c и передать их другой функции. код выглядит примерно так

fun getDistance(location1:LatLng,location2:LatLng){
    async{
        val result = URL(url).readtext() 
        uithread{
            //Parser
            //distance value
        }
    }
}

Я хотел бы также упомянуть, что я действительно новичок в разработке kotlin или android в целом, пожалуйста, будьте добры.

1 Ответ

0 голосов
/ 10 марта 2020

Есть несколько способов справиться с этим; передать объект функции с вашим массивом, который переставляется в вашей функции, или go с чем-то вроде:

fun getDistance(location1 : LatLng, location2 : LatLng, f: (Long) -> Unit){
    doAsync{ // Anko is deprecated as I have been made aware
        val result = URL(url).readtext()
        val distance : Long = // parse result
        uiThread{
            f(distance)
        }
    }
}

и вызвать его с помощью

getDistance(loc1, loc2) { toast("The found distance was $it") }

Это ни в коем случае не единственный путь; Вы могли бы обновить переменную с большей областью действия, вызвать слушателя, поместить свои значения lat-long в класс с вызываемыми функциями обновления или множеством других способов, о которых мне лень думать:)

...