【问题标题】:I want to declare an Array of type String that returns for me : Array<String>? not Array<String?>我想声明一个为我返回的 String 类型的数组:Array<String>?不是 Array<String?>
【发布时间】:2020-09-14 23:45:00
【问题描述】:

我正在创建一个 AsyncTaskLoader 我在我的主要活动中覆盖了这个功能:

override fun loadInBackground(): Array<String>? {
return OpenWeatherJsonUtils.getSimpleWeatherStringsFromJson(this@MainActivity, jsonWeatherResponse)
}

请注意,此函数不能接受任何类型,除了:Array?

在我的 OpenWeatherJsonUtils.getSimpleWeatherStringsFromJson 函数中,我有以下代码:

@Throws(JSONException::class)
fun getSimpleWeatherStringsFromJson(context: Context, forecastJsonStr: String): Array<String>? {

var parsedWeatherData: Array<String>?

val weatherArray = forecastJson.getJSONArray(OWM_LIST)

parsedWeatherData = arrayOfNulls<String>(weatherArray.length())

for (int i = 0; i < weatherArray.length(); i++) {
parsedWeatherData[i] = "$date - $description - $highAndLow"
        }

        return parsedWeatherData
}

错误是parsedWeatherData值需要Array? ,并且 arrayOfNulls 函数返回 Array

我必须添加或使用什么来返回 Array? loadInBackground() 乐趣需要的值,正如我上面提到的,我不能将 loadInBackground() 的类型更改为 Array?

请注意,我有一个回收器视图,它显示来自 Internet 的 JSON 文件中的天气数据,我尝试将 toTypedArray() 和 map{} 添加到 arrayOfNulls 但它不起作用

请帮忙 感谢关注。

【问题讨论】:

  • 为什么要使用 arraOfNulls 呢?
  • 除此之外还有什么建议吗?
  • weatherArray.map ?
  • @Blackbelt JSONArray in android does not extends Collection,所以 for 循环和 map 是不允许的,所以工厂函数应该是正确的选择(也因为 map 创建列表而不是数组,所以需要通过toTypedArray将列表复制到数组中。

标签: android kotlin


【解决方案1】:

不用创建空数组,因为你已经有了数据,你可以直接初始化数组:

@Throws(JSONException::class)
fun getSimpleWeatherStringsFromJson(context: Context, forecastJsonStr: String): Array<String> {
    val weatherArray = forecastJson.getJSONArray(OWM_LIST)

    val parsedWeatherData = Array(weatherArray.length()) {
        with(weatherArray.getJSONObject(it)) {
            "${get("date")} - ${get("description")} - ${get("highAndLow")}"
        }
    }
    return parsedWeatherData
}

【讨论】:

    猜你喜欢
    • 2022-07-22
    • 2017-06-01
    • 2011-09-13
    • 2016-01-16
    • 2017-01-29
    • 2019-01-09
    • 2018-08-16
    相关资源
    最近更新 更多