gpt4 book ai didi

Kotlin协程之后的Android getMapAsync

转载 作者:行者123 更新时间:2023-12-05 00:00:34 25 4
gpt4 key购买 nike

我有一个使用改造连接到 api 并在 recyclerview 中显示数据的应用程序,我现在添加了另一个 fragment ,在谷歌地图 fragment 上显示此数据。

当我在 recyclerview fragment 之后导航到它时, map fragment 很好,但是如果我启动应用程序并直接导航到 map fragment ,那么那里没有任何数据并且数据大小为 0。

这是 map fragment 的 fragment :

        val livePointViewModel: ChargePointViewModel by activityViewModels()
livePointViewModel.getChargePointQuery()

// bind viewmodel to view
binding.livePointsViewModel = livePointViewModel
binding.lifecycleOwner = this

livePointViewModel.status.observe(viewLifecycleOwner, Observer {
when (it) {
ChargeQueryAPIStatus.LOADING -> Timber.d("0 - map points query loading")
ChargeQueryAPIStatus.DONE -> {
Timber.d("0 - map points query complete")
livePointViewModel.listOfChargePoints.observe(viewLifecycleOwner, Observer {
it?.let {
Timber.d("1 - map points observed")
when{
it.isEmpty() -> Timber.d("2.1- map points live charge point size:${it.size}")
it.isNotEmpty() -> generateMap()
}
}
})
}
}
})

这是我的 .getChargePointQuery 函数:

fun getChargePointQuery() {
viewModelScope.launch {
_status.value = ChargeQueryAPIStatus.LOADING
try {
_response.value = "Loading"
val chargeQuery: ChargeQuery?
// check if using live location or using static postcode
if (useLocation.value == true) {
chargeQuery = ChargeApi.retrofitService.getChargeQueryObjectLocation(
myLatitude.value.toString(),
myLongitude.value.toString(),
distance.value.toString(),
limit.value.toString()
)
} else { // using postcode
chargeQuery = ChargeApi.retrofitService.getChargeQueryObjectPostcode(
postcode.value.toString(),
distance.value.toString(),
limit.value.toString()
)
}

_listOfChargePoints.value = convertChargePoints(chargeQuery.chargeDevices)
_status.value = ChargeQueryAPIStatus.DONE
}

} catch (e: Exception) {
_status.value = ChargeQueryAPIStatus.ERROR
_response.value = "Failure: ${e.message}"
}
}
}

我的 recyclerview fragment 将数据列表提交给适配器,然后仅当状态更改为 DONE 时才使 View 可见 - 但是在 map fragment 中,我尝试做同样的事情但是在 DONE 分支中我的数据列表似乎仍然是空的,不会生成 map 。

如果有帮助,这是我的整个项目:https://github.com/Kovah101/ChargeMyCar

最佳答案

我自己解决了这个问题。将我的实时列表与我的实时 map fragment 进行比较,除了您如何导航到它们之外,它们几乎完全相同。对于实时列表,我会设置变量 useLocation.value = true ,但是对于实时 map fragment ,变量没有初始化。我现在在进行任何导航之前设置默认值 useLocation.value = true

关于Kotlin协程之后的Android getMapAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71309339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com