Android 我不明白为什么尺寸是0造成的

Android 我不明白为什么尺寸是0造成的,android,kotlin,kotlin-coroutines,kotlin-android-extensions,Android,Kotlin,Kotlin Coroutines,Kotlin Android Extensions,我不知道大小返回到0的位置,我在Kotlin中使用Android中的GeoCoder从LatLng获取地址,如下所示: fusedLocationProviderClient.lastLocation .addOnFailureListener {e -> Snackbar.make(requireView(),e.message!!,Snackbar.LENGTH_SHORT).show() } .addOnSuccessList

我不知道大小返回到0的位置,我在Kotlin中使用Android中的GeoCoder从LatLng获取地址,如下所示:

fusedLocationProviderClient.lastLocation

            .addOnFailureListener {e -> Snackbar.make(requireView(),e.message!!,Snackbar.LENGTH_SHORT).show() }
                .addOnSuccessListener {  location ->

// load all driver city
val geocoder = Geocoder(requireContext(),Locale.getDefault())

var addressList: List<Address> = ArrayList()

try {
    addressList = geocoder.getFromLocation(location.latitude, location.longitude, 1)
    CityName = addressList[0].locality

    // query
    val drever_location_ref = FirebaseDatabase.getInstance().getReference(common.DREIVER_LOCATION_REFERNCE)
                                .child(CityName)
    val gf = GeoFire(drever_location_ref)
    val geoQuery = gf.queryAtLocation(GeoLocation(location.latitude, location.longitude), distance)
    geoQuery.removeAllListeners()
    geoQuery.addGeoQueryEventListener(object:GeoQueryEventListener {
                            override fun onGeoQueryReady() {
                                if (distance <= LIMIT_RANG)
                                {
                                    distance++
                                    loadAvailbleDrivers()
                                }
                                else
                                {
                                    distance =0.0
                                    addDriverMarker()
                                }
                            }
                            override fun onKeyEntered(key: String?, location: GeoLocation?) {
                                common.dreiversfound.add(DriverGeoModel(key!!,location!!))
                            }
                            override fun onKeyMoved(key: String?, location: GeoLocation?) {
                            }
                            override fun onKeyExited(key: String?) {
                            }
                            override fun onGeoQueryError(error: DatabaseError?) {
                                Snackbar.make(requireView(),error!!.message,Snackbar.LENGTH_LONG).show()

                            }

                        })

                        drever_location_ref.addChildEventListener(object :ChildEventListener{
                            override fun onChildAdded(p0: DataSnapshot, p1: String?) {
                                val  geoQueryModel = p0.getValue(GeoQueryModel::class.java)
                                val geoLocation= GeoLocation(geoQueryModel!!.l!![0],geoQueryModel.l!![1]) // L ( letter small)
                                val driverGeoModel= DriverGeoModel(p0.key,geoLocation)
                                val newDreiverLocation = Location("")
                                newDreiverLocation.latitude = geoLocation.latitude
                                newDreiverLocation.longitude = geoLocation.longitude
                                val newDestance = location.distanceTo(newDreiverLocation)/1000 // KM (kilo metter)
                                if (newDestance <= LIMIT_RANG)
                                {

                                    findDeriverbykey(driverGeoModel)
                                }

                            }

                            override fun onChildChanged(p0: DataSnapshot, p1: String?) {
                                TODO("Not yet implemented")
                            }

                            override fun onChildRemoved(p0: DataSnapshot) {
                                TODO("Not yet implemented")
                            }

                            override fun onChildMoved(p0: DataSnapshot, p1: String?) {
                                TODO("Not yet implemented")
                            }

                            override fun onCancelled(p0: DatabaseError) {
                                Snackbar.make(requireView(),p0.message,Snackbar.LENGTH_LONG).show()
                            }
                        })

                    }catch (e:IOException)
                    {
                        Snackbar.make(requireView(),getString(R.string.permission_require),Snackbar.LENGTH_LONG).show()

                    }

                }



}
但是,对于
addresslist.maxAddressLineIndex
,我得到了0

CityName[0]
具有以下值。我通过调试进行了检查


可能是什么问题?有什么解决方案吗?

您不能在主线程中运行
geocoder.getFromLocation

  private fun addDriverMarker() {
    if (common.dreiversfound.size > 0)
    {
        Observable.fromIterable(common.dreiversfound)
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({driverGeoModel:DriverGeoModel?->
                    findDeriverbykey(driverGeoModel)


                },
                        {
                            t: Throwable? ->

                            Snackbar.make(requireView(),t!!.message!!,Snackbar.LENGTH_LONG).show()



                        }
                )


    }
    else
    {
        Snackbar.make(requireView(),getString(R.string.driver_not_found),Snackbar.LENGTH_LONG).show()
    }

}