二维数组在Kotlin

你如何在Kotlin中创建2D Int数组? 我试图将此代码转换为Kotlin:

int[][] states = new int[][] { new int[]{-android.R.attr.state_pressed}, // not pressed new int[] { android.R.attr.state_pressed} // pressed }; int[] colors = new int[] { foregroundColor, accentColor, accentColor }; ColorStateList myList = new ColorStateList(states, colors); 

这是我尝试过的一个尝试,第一个二维数组没有工作,但我得到了一维数组的工作:

  //This doesn't work: var states: IntArray = intArrayOf( intArrayOf(-android.R.attr.state_pressed), // not pressed intArrayOf(android.R.attr.state_pressed) // pressed ); //This array works: var colors: IntArray = intArrayOf( foregroundColor, accentColor, accentColor ); val myList: ColorStateList = ColorStateList(states, colors); 

你正试图把你的IntArrays放在另一个数组中,使它成为二维的。 该数组的类型不能是intArray,这就是失败的原因。 用arrayOf而不是intArrayOf包装你的初始数组。

 val even: IntArray = intArrayOf(2, 4, 6) val odd: IntArray = intArrayOf(1, 3, 5) val lala: Array<IntArray> = arrayOf(even, odd) 

您可以将这行代码用于整数数组。

 val array = Array(row, {IntArray(column)} 

这行代码非常简单,像1D数组一样,也可以像java二维数组一样访问。

看来你正在尝试在Kotlin中创建一个ColorStateList 。 代码有点乱,我会尽量保持它的可读性:

 val resolvedColor = Color.rgb(214,0,0) val states = arrayOf( intArrayOf(-android.R.attr.state_pressed), intArrayOf(android.R.attr.state_pressed) ) val csl = ColorStateList( states, intArrayOf(resolvedColor, Color.WHITE) )