如何解决以编程方式创建数组
我想以编程方式创建一个数组,如下所示使用 Kotlin。我对 Java、Kotlin 和 Android 了解不多。这可能吗?
val list1 = mutableListOf<String>()
// val array1 = arrayOf<String>()
for (i in 0 until 6) {
list1.add(i,"\"$i\"")
}
println(list1)
输出:["0","1","2","3","4","5"]
我可以转换可变 List 或 ArrayList 来创建像 ["0","5"]
这样的字符串数组吗?
这是为 AlertDialog 创建一个数组。
val m = item_type
var n = m - 1
var item_max = 0
when(TextView.text) {
"Title 1" -> {
item_type_from_list = item_type_list[n]
}
}
val itemTypes = generateArray(1,item_type_from_list) // Function to
// create desired array
/*val itemTypes = arrayOf<String>(
"1","5"
*/
val mBuilder = AlertDialog.Builder(requireContext())
mBuilder.setTitle("${TextView.text}")
mBuilder.setSingleChoiceItems(itemTypes,selectedItems1[0]) { dialog,i
->
selectedItems1[0] = i
var item_type_selected = selectedItems1[0]
dialog.dismiss()
}
val mDialog = mBuilder.create()
mDialog.show()
您还可以建议我可以做的任何替代方案吗?
解决方法
val list1 : ArrayList<String> = arrayListOf()
然后你可以像这样添加你的元素:
for (i in 0 until 6) {
list1.add(i.toString())
}
对于您的 AlertDialog,您可以使用以下内容:
mBuilder.setSingleChoiceItems(list1.toTypedArray(),selectedItems1[0]) { dialog,i ->
selectedItems1[0] = i
var item_type_selected = selectedItems1[0]
dialog.dismiss()
}
val mDialog = mBuilder.create()
mDialog.show()
,
val list1= mutableListOf<String>()
val array:Array<String> = list1.toTypedArray()
现在,打印它们的元素的结果将是相同的,但是,list1
是一个 List
而 array
是一个 Array
如果你只是想生成一个数组:
val array = Array(6) { "$it" }
这将创建一个包含 6 个元素的数组,lambda 是获取传入的当前元素索引的初始化函数。所以我只是把它变成了一个字符串。或者,如果您愿意,也可以使用函数引用,可能会更清楚:
val array = Array(6,Int::toString)
要将列表转换为数组,请使用 toTypedArray
函数。您可以按照与上述相同的方式创建列表,顺便说一句:
// or MutableList
val list = List(6) { "$it" }
val array = list.toTypedArray()
或者作为更一般的情况(这里不是最好的主意,但它是您可以通过一系列转换生成任意集合的方式):
val nums = (0..5).map { "$it" }.toTypedArray()
另外,以防万一你不知道,有特殊的数组类型来表示基元数组:
val integers = Array(6) { it }
val ints = IntArray(6) { it }
第一个在幕后创建一个 Integer[]
数组类型,它是一个 Integer
对象数组。第二个创建一个 int[]
,它是一个 int
基元数组,效率更高。只是需要注意的事情,以防万一!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。