【发布时间】:2019-04-20 06:02:21
【问题描述】:
我想将 API 响应分配给 Kotlin 中的全局数组列表,但数组列表在 handleResponse 函数之外仍然为空 var 一次性:一次性? =空 lateinit var mMap:谷歌地图 var sensorsData = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_maps)
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
showReading("Jxh7GGbk5S5KaBcnlQ4vUw")
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
fun showReading(token: String) {
disposable = client.sensorData(token)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::handleResponse)
}
fun handleResponse(sensorData: SensorNode) {
this.sensorsData.add(sensorData)
Log.d("SENSOR DATA", "" + sensorsData.get(0)) // Works
}
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
Log.d("SENSOR DATA", "" + sensorsData.get(0)) // Return Null
val sensor = LatLng(-6.8, 39.0)
mMap.addMarker(MarkerOptions().position(sensor).title("Sensor Node 1"))
}
override fun onPause() {
super.onPause()
disposable?.dispose()
}
【问题讨论】:
-
什么时候调用handleResponse方法?可能在您在数组中插入项目之前先执行了 onMapReady
-
onMapReady 之前
标签: android google-maps kotlin retrofit2 rx-java2