如何用JSON API支架列表制作KOTLIN列表

我正在尝试从JSon API在Kotlin中创建一个列表。 我做了Udemy的教程,我做了天气应用程序。 它完美的工作,但现在我需要一个订单列表新的列表。

这里是天气API代码:

{ "query": { "results": { "channel": { "item" : { "forecast" : [ { "data": 1 }, { "data": 1 }, { "data": 1 } ] } } } } } 

但是现在我需要列出一个列表,并采用前面的例子,它看起来像这样:

 { "query": { "results": { "channel": { "item": { "forecast": { "0": { "data": 1 }, "1": { "data": 1 }, "2": { "data": 1 } } } } } } } 

这里是与API的第一个例子一起工作的Kotlin代码:

 // IN FILE WeatherHelp.kt import retrofit2.Call import retrofit2.Callback import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import retrofit2.http.GET import retrofit2.http.Query interface WeatherAPI { @GET("yql?format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys") fun getForecast(@Query("q") q: String) : Call } class Weather(val query: WeatherQuery) class WeatherQuery(val results: WeatherResult) class WeatherResult(val channel: WeatherChannel) class WeatherChannel(val title: String, val item: WeatherItem) class WeatherItem(val forecast: List) class Forecast(val date: String, val day: String, val high: String, val low: String, val text: String) class WeatherRetriever { val service : WeatherAPI init { val retrofit = Retrofit.Builder().baseUrl("https://query.yahooapis.com/v1/public/").addConverterFactory(GsonConverterFactory.create()).build() service = retrofit.create(WeatherAPI::class.java) } fun getForecast(callback : Callback, searchTerm : String) { var default = searchTerm if (searchTerm == "") { default = "Paris" } val q = "select * from weather.forecast where woeid in (select woeid from geo.places(1) where text=\"${default}\")" val call = service.getForecast(q) call.enqueue(callback) } } 
 // IN FILE ForecastActivity.kt class ForecastActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_forecast) val retriever = WeatherRetriever() val callback = object : Callback { override fun onResponse(call: Call?, response: Response?) { println("RESPONSE") title = response?.body()?.query?.results?.channel?.title println(response?.body()?.query?.results?.channel?.item?.forecast) var forecasts = response?.body()?.query?.results?.channel?.item?.forecast var forecastStrings = mutableListOf() if (forecasts != null) { for (forecast in forecasts) { val newString = "${forecast.date}\nHigh = ${forecast.high} Low = ${forecast.low}\n${forecast.text}" forecastStrings.add(newString) } } var listView = findViewById(R.id.forecastListView) var adapter = ArrayAdapter(this@ForecastActivity, android.R.layout.simple_list_item_1, forecastStrings) listView.adapter = adapter } override fun onFailure(call: Call?, t: Throwable?) { println("FAILURE") } } val searchTerm = intent.extras.getString("searchTerm") retriever.getForecast(callback, searchTerm) } } 

所以我试图做一个“预测”对象的列表,但正如你所看到的,这不包含任何json数组列表,但键为“0”和“1”(没有'[‘)

我相信问题不是API,因为我的朋友正在做同样的应用程序,但对于IOS,这是他的工作。

我想,当更多的命令将被添加时,我们应该有一个“4”,“5”等键和值。

所以我的问题是:如何创建一个列表(这将是一个xml ListView,并将自动刷新)从这些types的对象?

(对不起,张贴这么多的代码,但我真的坚持)

先谢谢你。