如何使用 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 EditText
s)
可能有更好的方法来完成您正在做的事情,但这是您的基本问题 - 无法更新列表中不存在的项目。数组对于您将通过索引
访问的固定结构更有意义
'''
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 EditText
s)
可能有更好的方法来完成您正在做的事情,但这是您的基本问题 - 无法更新列表中不存在的项目。数组对于您将通过索引
访问的固定结构更有意义