私はAndroid dev(Javaまたはkotlinの両方)の初心者です。レトロフィットとモシを使用して json からスピナーを設定しようとしていますが、スピナーに設定する方法がわかりません。正直なところ、Log.d() の戻り値は dump() laravel や php のように詳細ではないため、Json データの戻り値が正しいかどうかはわかりません。
アクティビティ onCreate のスクリプト (スクリプトのコメントを読んでくださいLog.d()
。そこにデバッグ結果を入れます):
val task = object : AsyncTask<Void, Void, Response<List<ProductTypeResponse>>>() {
override fun doInBackground(vararg params: Void): Response<List<ProductTypeResponse>> {
val typeAPI = RestAPI()
val callResponse = typeAPI.getNews()
val response = callResponse.execute()
return response
}
override fun onPostExecute(response: Response<List<ProductTypeResponse>>) {
if (response.isSuccessful) {
val news = response.body()
Log.d("test:", news!![0].data.toString()) // method 'java.lang.String com.example.mockie.tigaer.api.TypeDataResponse.toString()' on a null object reference
Log.d("test:", news!!.size.toString()) // it says 67 but the data from the url is 63 array of json object
Log.d("test:", news!![0].toString()) // com.example.mockie.tigaer.api.ProductTypeResponse@f17fd5e
}
}
RestApi.kt
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
class RestAPI() {
private val tigaerApi: TigaerApi
init {
val retrofit = Retrofit.Builder()
.baseUrl("http://app.tigaer.id/laravel/")
.addConverterFactory(MoshiConverterFactory.create())
.build()
tigaerApi = retrofit.create(TigaerApi::class.java)
}
fun getNews(): Call<List<ProductTypeResponse>> {
return tigaerApi.getTop()
}
}
ApiModel.kt
package com.example.mockie.tigaer.api
class ProductTypeResponse(val data: TypeDataResponse)
class TypeDataResponse(
val children: List<ProductTypeChildrenResponse>
)
class ProductTypeChildrenResponse(val data: ProductTypeDataResponse)
class ProductTypeDataResponse(
val productType: String,
val readable: String
)
TigaerApi.kt
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Query
interface TigaerApi {
@GET("api/type")
fun getTop(): Call<List<ProductTypeResponse>>
}
JSON を返す: https://jsoneditoronline.org/?id=ce90c41b859218e746e41d64eddb4c30
私の質問は次のとおりです。
- laravel のようにオブジェクト/配列を詳細にデバッグする機能はありますか?
- json の戻りデータをスピナーに入力する方法を教えてください。