如何使用 Kotlin 在 Android Studio 中制作 EditText 的二维数组列表?

How to Make 2D ArrayList of EditText in Android Studio using Kotlin?

'''

class MainActivity : AppCompatActivity() {
    private var button: Button? = null
    private var textList: ArrayList<ArrayList<EditText>> = arrayListOf(arrayListOf())
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button = findViewById<Button>(R.id.solve)

          textList[0][0]=findViewById<EditText>(R.id.ed1)
          textList[0][1]=(findViewById(R.id.ed2))
          textList[0][2]=(findViewById(R.id.ed3))
          textList[0][3]=(findViewById(R.id.ed4))
          textList[0][4]=(findViewById(R.id.ed5))
}
}

'''

我想将 EditText 存储在 2D ArrayList 中,但上述方法不起作用。我不知道为什么,但它在打开时崩溃了应用程序。那我应该怎么做呢?

这个:

val list: ArrayList<Int> = arrayListOf()
list[0] = 123

表示“将索引 0 处的项目替换为 123”。但这是一个空列表, 没有索引 0。假设您使用索引 2 代替 - 如果您 可以 在那里插入一些东西,那会是什么索引 1 和 0?对于列表中的第 3 项,需要有第 2 项和第 1 项,对吗?

您可能需要一个数组:

private val rows = 5
private val columns = 5
private var textList: Array<Array<EditText>> = Array(rows) { arrayOfNulls(columns) }

这将为每一行创建一个数组,并用空值填充它,每列一个。然后你可以用 findViewById 分配它们(它可以 return null,这是你的 ArrayList 遇到的另一个问题 - 它只能容纳 non-null EditTexts)

可能有更好的方法来完成您正在做的事情,但这是您的基本问题 - 无法更新列表中不存在的项目。数组对于您将通过索引

访问的固定结构更有意义