【发布时间】:2018-08-23 03:17:49
【问题描述】:
我正在尝试使用 Retrofit 和 Android 架构组件调用 API,但出现此错误
java.lang.RuntimeException: 无法调用没有参数的公共 android.arch.lifecycle.LiveData()
这是响应的数据类
data class ForecastResult(val city: City, val list: List<Forecast>)
服务接口
interface ServicesApis { // using dummy data
@GET("data/2.5/forecast/")
fun getForecast(@Query("APPID") APPID: String = "xxxxxxxx"
, @Query("q") q: String = "94043", @Query("mode") mode: String = "json", @Query("units") units: String = "metric"
, @Query("cnt") cnt: String = "7"): Call<LiveData<ForecastResult>>
}
和api实现
class WeatherRepoImpl : WeatherRepo {
override fun getDailyForecast(): LiveData<Resource<ForecastResult>> {
val forecast: MutableLiveData<Resource<ForecastResult>> = MutableLiveData()
RestAPI.getAPIsrevice().getForecast().enqueue(object : Callback<LiveData<ForecastResult>> {
override fun onResponse(call: Call<LiveData<ForecastResult>>?, response: Response<LiveData<ForecastResult>>?) {
when {
response!!.isSuccessful -> {
forecast.postValue(Resource.success(response.body()?.value))
}
else -> {
val exception = AppException(responseBody = response.errorBody())
forecast.postValue(Resource.error(exception))
}
}
}
override fun onFailure(call: Call<LiveData<ForecastResult>>?, t: Throwable?) {
val exception = AppException(t)
forecast.postValue(Resource.error(exception))
}
})
return forecast
}
}
感谢您的帮助!
【问题讨论】:
-
也许这不是问题,你能告诉我们改造的 API 接口吗?
-
我已经更新了帖子
-
Call<LiveData<ForecastResult>>你有合适的转换器吗? -
你用过Repository吗?你也有数据库吗?有你的项目样本给我看吗?请
标签: android kotlin gson retrofit android-architecture-components