Convierta Any a ArrayList en Kotlin, Retrofit

Estoy usando Kotlin y Retrofit en mi aplicación de Android. La respuesta es una class. con valor genérico, es decir. datos: ¿alguno?

data class GlobalResponse(@Expose val status: String, @Expose val message: String, @Expose val data: Any?) data class District(@Expose val name:String) @GET("{endpoint}") fun getData( @Path("endpoint") endpoint: String ): Observable<GlobalResponse> RestService.create().getData("res") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response -> // Ok Log.e("Hello", "Hello") // problem here // Jumps to error-> below Log.e("Name", ((response.data as ArrayList<District>)[0]).name) }, { error -> // do something }) 

Obtengo los datos del server pero no puedo get el valor individual del object. el Log Hello imprime bien pero el segundo Log no se ejecuta. Luego arroja un error.


Ok, finalmente resolví el problema. Todo lo que tuve que hacer fue convertir los datos a cadena JSON usando Gson y de nuevo convertir la cadena Gson en class de object JSON Array. Pensé que podría escribir directamente el reparto. 🙁 Porque eso es lo que hizo id en Java puro

De todos modos, aquí está el código.

 RestService.create().getData("res") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response -> val temp:String = Gson().toJson(response.data) val districtList:ArrayList<District> = Gson().fromJson(temp, genericType<ArrayList<District>>()) Log.e("Name", (districtList[0]).name) }, { error -> // do something }) inline fun <reified T> genericType() = object : TypeToken<T>() {}.type!!