Reputation: 25
Currently my API look like this. you can check on https://indonesia-covid-19-api.now.sh/api/provinsi/
{
"data": [
{
"fid": 11,
"kodeProvi": 31,
"provinsi": "DKI Jakarta",
"kasusPosi": 164577,
"kasusSemb": 148237,
"kasusMeni": 3087
},
{
"fid": 15,
"kodeProvi": 35,
"provinsi": "Jawa Timur",
"kasusPosi": 76111,
"kasusSemb": 65382,
"kasusMeni": 5254
},
{
"fid": 35,
"kodeProvi": 0,
"provinsi": "Indonesia",
"kasusPosi": 0,
"kasusSemb": 0,
"kasusMeni": 0
}
]
}
And this is my model
province.kt
@Parcelize
data class Province(
@SerializedName("data")
val data: MutableList<Data>?
): Parcelable
data.kt
@Parcelize
data class Data(
@SerializedName("fid")
val fid: String?,
@SerializedName("kasusMeni")
val kasusMeni: String?,
@SerializedName("kasusPosi")
val kasusPosi: String?,
@SerializedName("kasusSemb")
val kasusSemb: String?,
@SerializedName("kodeProvi")
val kodeProvi: String?,
@SerializedName("provinsi")
val provinsi: String?
): Parcelable
What i wan't is getting the list inside the object. What've i tried to do is
Interface.kt
@GET("api/provinsi/")
fun getProvinceDetails(): Single<Province>
DataSource.kt
...
private val _networkState = MutableLiveData<NetworkState>()
val networkState: LiveData<NetworkState>
get() = _networkState
...
private val _provinceDetailsResponse = MutableLiveData<Province>()
val provinceDetailsResponse: LiveData<Province>
get() = _provinceDetailsResponse
...
fun fetchProvinceDetails() {
_networkState.postValue(NetworkState.LOADING)
try {
compositeDisposable.add(
apiService.getProvinceDetails()
.subscribeOn(Schedulers.io())
.subscribe({
_provinceDetailsResponse.postValue(it)
_networkState.postValue(NetworkState.LOADED)
},
{
_networkState.postValue(NetworkState.ERROR)
Log.e("DataSource", it.message!!)
}
)
)
}
catch (e: Exception){
Log.e("DataSource", e.message!!)
}
}
I'm trying to get the array/list inside the JSONObject so i can use fetch it in my adapter. Any help would be appreciated.
Upvotes: 0
Views: 213
Reputation: 1338
Your Province.kt file should change the data type to be an ArrayList
Also, please see that you have added to the Retrofit builder for the conversion.
.addConverterFactory(GsonConverterFactory.create(gsonProviderInstanceHere))
Hope this helps in fixing the issue.
Upvotes: 1