如何在 Kotlin 中使用 for 循环创建一个 editText 数组 - Android Studio

How to create an array of editTexts using for loop on Kotlin - Android Studio

在我们的 class 这周,我们的任务是创建一个简单的蛋糕烘焙应用程序。有两个编辑文本字段(wetText,dryText),用户可以在其中输入要添加到蛋糕中的成分。添加成分后单击一个混合按钮。在单击混合按钮时,我的目标是将添加的成分从 editText 列出到新的 textView(cakeText) 中,如下所示:

您添加了 --- 到击球手!
您添加了 --- 到击球手!
您添加了 --- 到击球手!
等等

我们应该使用 for 循环,我认为使用数组可能是正确的。 batterList 是我最近的一次尝试,所以我知道这是错误的,但我很想知道如何修复它!我已经为此工作了几个小时并且已经接近,但还不够接近。我希望这是有道理的。在这一点上,我的头脑不正常。任何建议将不胜感激!

    val wetList = mutableListOf<String>()
    val dryList = mutableListOf<String>()
    val batterList = arrayOf(wetList)



    class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
}

fun wetButtonTapped(view: View) {
    wetList.add(wetText.text.toString())
    wetText.text.clear()
    ingredientList.text = "You have ${wetList.count()} wet ingredients \n You have ${dryList.count()} dry indredients"
}

fun dryButtonTapped(view: View) {
  dryList.add(dryText.text.toString())
    dryText.text.clear()
    ingredientList.text = "You have ${wetList.count()} wet ingredients \n You have ${dryList.count()} dry indredients"
}

fun mixButtonTapped(view: View) {
    //cakeText.text = "You added ${wetList}"
 for (item in batterList){
 cakeText.text = "You added $item to the batter!"
 }

您总是将预期列表的最后一行分配到 cakeText

试试这个:

cakeText.text = "${cakeText.text}\nYou added $item to the batter!"

这应该在正文中一项一项地添加。 此外,您可能需要将 batterListval 更改为 var 并在 mixButtonTapped 上重新分配。所以最终代码应该是这样的:

var batterList = arrayOf(wetList)
...

fun mixButtonTapped(view: View) {
batterList = arrayOf(wetList)
  for (item in batterList){
    cakeText.text = "${cakeText.text}\nYou added $item to the batter!"
  }
}

据我了解,您想在单个文本视图中显示所有添加的成分。因此,我不会声明一个有时无法管理的新数组,而是直接使用数组和 StringBuilder class 来构建整个字符串

fun mixButtonTapped(view: View) {

    val stringBuilder = StringBuilder()

    // here (wetList + dryList) will be merged into single list
    for (item in (wetList + dryList))
        stringBuilder.append("You added $item to the batter!\n")

    cakeText.text = stringBuilder.toString()

}

所以我不会管理第三个数组,而是直接使用这两个数组并在我的任务完成时处理合并的数组,在这种情况下,它将在循环完成时处理。