Android Kotlin - 将 jsonArray 转换为 Array<String>

Kin*_*ing 2 android json kotlin

我从 API 得到一个数组:

val pics = response.getJSONArray("pics")
Run Code Online (Sandbox Code Playgroud)

pics 包含像:

["https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/19\/55\/497173801955.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/10\/34\/242830811034.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/86\/23\/808728238623.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/90\/41\/146747399041.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/47\/41\/672475854741.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/63\/94\/771076926394.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/36\/42\/182330463642.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/29\/96\/948397532996.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/82\/54\/761385508254.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/41\/42\/142837364142.jpg","https:\/\/www.bla.com\/extern\/v\/pics\/mitte\/66\/25\/215324906625.jpg"]
Run Code Online (Sandbox Code Playgroud)

我需要把它变成一个 ArrayList<String>

这是将 JAVA 解决方案转换为 kotlin 后的多次尝试之一:

val list = ArrayList<String>()
for (i in 0 until pics.length()) {
   list.add(pics.getJSONObject(i).getString("name"))
}
Run Code Online (Sandbox Code Playgroud)

然后当我尝试list在 ViewPager 中使用时,我得到类型不匹配:

Required: Array<String>

Found:kotlin.collections.ArrayList<String
Run Code Online (Sandbox Code Playgroud)

这该怎么做??

为什么不能像 PHP smh 一样只是简单的 array() 这一切都太烦人了

lel*_*man 6

Array<String>并且ArrayList<String>是 2 种不同的类型。

您需要提供的是,Array<String>但您实际提供的是ArrayList<String>.

val list = Array(pics.length()) {
    pics.getString(it)
}
Run Code Online (Sandbox Code Playgroud)