在使用Kotlin开发Android项目时遇到Rxjava 的map()类型转换出错,如下
解决方法如下:
private fun <T> request(observable: Observable<ApiResult<T>>, consumer: Consumer<T>) {
observable.map(HttpResult<T>())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(consumer, Consumer<Throwable> { t ->
dismissDialog()
Toast.makeText(this@MainActivity, t!!.message, Toast.LENGTH_LONG).show()
})
其中
Observable<需要的类型> 与 ApiService.Class 中请求方法返回值类型的一致
ApiService.Class 代码如下:
interface ApiService {
@POST("oauth2/token/access_token")
fun getAccessToken(@Query("grant_type") grant_type : String,
@Query(value = "username", encoded = true) username :String,
@Query(value = "password", encoded = true) password:String) : Observable<ApiResult<OAuthTokenBean>>
@GET("app/ground/test/land")
fun getLand(@Query("access_token") access_token :String,
@Query("id") id:Int):Observable<ApiResult<Land>>
}