E/AndroidRuntime: FATAL EXCEPTION: Thread-8 – Al utilizar función geocoder GoogleMaps Android Studio

Estoy experimentando desarrollar una aplicación con mapa soy nuevo aún en el desarrollo de aplicaciones móviles. Estoy haciendo una llamada asíncrona a la función geocoder de la API de google maps implementando un nuevo hilo para que no pueda intervenir en el hilo principal de la siguiente manera:

private fun onMapReady(){
  requestPermissions(arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 1)


        locationManager = this.requireContext().getSystemService(LOCATION_SERVICE) as LocationManager

        if (ActivityCompat.checkSelfPermission(
                this.requireContext(),
                Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
                this.requireContext(),
                Manifest.permission.ACCESS_COARSE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            ActivityCompat.requestPermissions(
                this.requireContext() as Activity,
                arrayOf(
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.ACCESS_COARSE_LOCATION
                ),
                101
            )
            return
        }
        mMap.isMyLocationEnabled = true
        mMap.uiSettings.isMyLocationButtonEnabled = false

        locationManager.requestLocationUpdates(NETWORK_PROVIDER, 1000L, 0.0f, object : LocationListener{
            override fun onLocationChanged(location: Location?) {

            }

            override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {

            }

            override fun onProviderEnabled(provider: String?) {

            }

            override fun onProviderDisabled(provider: String?) {

            }

        })

        geocoder = Geocoder(context, Locale.getDefault())

        mMap.setOnCameraIdleListener{
            val centerMap = mMap.cameraPosition.target
            hilosDirection(centerMap) //Buscamos la dirección con el hilo
        }

        mMap.setOnCameraMoveListener {
            originDirection.text = "Actualizando ubicación..."
        }

    }

El hilo donde implemento la función geocoder de google maps lo implemente de ésta forma:

fun hilosDirection(centerMap: LatLng){
        Thread(object : Runnable{
            override fun run() {
                try {
                    address = geocoder.getFromLocation(centerMap.latitude, centerMap.longitude, 1) as List<Address>

                        val originAddress = (address(0).getAddressLine(0)).split(",") //ÉSTA ES LA LINEA EN DONDE ME ENVÍA EL ERROR "HomeFragment.kt:442"
                        activity!!.runOnUiThread(object : Runnable{
                            override fun run() {
                                originDirection.text = originAddress(0)
                            }
                        })

                }catch (e:IOException){
                    e.printStackTrace()
                }
            }
        }).start()
    }

Cuando lo ejecuto en un dispotivo Xiaomi con normalidad me mustra el marcador azul de mi ubicación. El error que me envía me pasa cuando estoy probando en un dispositivos con Android 7 como por ejemplo un Alcatel y un Azumi.

La verdad no se porqué me envía éste error:

2020-06-27 19:46:46.760 12640-12840/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: Thread-8
    Process: com.example.myapplication, PID: 12640
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.get(ArrayList.java:411)
        at com.example.myapplication.ui.home.HomeFragment$hilosDirection$1.run(HomeFragment.kt:442)
        at java.lang.Thread.run(Thread.java:761)

Si alguien podría guiarme o quizá esté implementando mal el hilo o tenga algun problema con la función geocoder le agradecería de antemano

Move the Openlayers Geocoder Pointers – Stack Overflow in Spanish

I'm trying to move the pointers created by the geocoder open layers, but I have not been able to do it yet.
The idea is to do like Google maps as you enter two directions and create a trace between the two points (A and B) (until then everything is perfect).
The problem is that I want to move these two points (A and B) afterwards and that I go to the addresses. Could someone give me an example? thank you so much