使用 for 循环检查编辑文本中的空值

Checking for null in edit text with for loop

我想使用 for 循环检查编辑文本中的空值,我不想在执行此操作时重复代码。我试过了,但出错了。你能帮帮我吗

binding.apply {

  val editTextList: ArrayList<EditText> = ArrayList()
  editTextList.add(binding.etRegistedFullname)
  editTextList.add(binding.etRegistedEmail)
  editTextList.add(binding.etRegistedAge)
  editTextList.add(binding.etRegistedPassword)
  editTextList.add(binding.etRegistedConfirmpassword)
  editTextList.add(binding.etRegistedPhone)

  //Bu for dögüsü sayaseinde 15 satır koddan kurtuldum
  for (item in editTextList) {
    // Toast.makeText(this@RegisterActivity,item.id.toString(),Toast.LENGTH_SHORT).show()
    when {
      TextUtils.isEmpty(editTextList.get(item.id).text.toString().trim { it <= ' ' }) -> {
        editTextList.get(item.id).error = "Cannot be blank"
        editTextList.get(item.id).requestFocus()
      }
      else -> {
        if (isValidPassword(etRegistedPassword.text.toString().trim())) {
          if (etRegistedPassword.text.toString().equals(etRegistedConfirmpassword.text.toString())) {
            val user = getPerson()
            authcreateUser(user)
          } else {
            Toast.makeText(
              this@RegisterActivity, 
              "password and confirm password must be the same",
              Toast.LENGTH_SHORT
            ).show()
          }
        } else {
          etRegistedPassword.setError("At least one number, one lowercase letter, at least one uppercase letter, no spaces and a minimum of 8 characters")
          etRegistedPassword.requestFocus()
        }
      }
    }
  }

}

由于您的代码已经包含在 binding.apply 中,因此您不必继续输入 binding.。使用 listOf 创建列表比创建一个空的 ArrayList 然后一个一个地填充它更容易。

你的这段代码没有意义:

editTextList.get(item.id)

item 已经是一个 EditText,因此您不需要再次从列表中获取它。 List.get 将在数组中的那个索引处查找项目,它与视图的 ID 完全没有关系。

binding.apply {

  val editTextList = listOf(
      etRegistedFullname,
      etRegistedEmail,
      etRegistedAge,
      etRegistedPassword,
      etRegistedConfirmpassword,
      etRegistedPhone
    )

  //Bu for dögüsü sayaseinde 15 satır koddan kurtuldum
  for (item in editTextList) {
    // Toast.makeText(this@RegisterActivity,item.id.toString(),Toast.LENGTH_SHORT).show()
    when {
      TextUtils.isEmpty(item.text.toString().trim { it <= ' ' }) -> {
        item.error = "Cannot be blank"
        item.requestFocus()
      }
      else -> {
        if (isValidPassword(etRegistedPassword.text.toString().trim())) {
          if (etRegistedPassword.text.toString().equals(etRegistedConfirmpassword.text.toString())) {
            val user = getPerson()
            authcreateUser(user)
          } else {
            Toast.makeText(
              this@RegisterActivity, 
              "password and confirm password must be the same",
              Toast.LENGTH_SHORT
            ).show()
          }
        } else {
          etRegistedPassword.setError("At least one number, one lowercase letter, at least one uppercase letter, no spaces and a minimum of 8 characters")
          etRegistedPassword.requestFocus()
        }
      }
    }
  }

}

除此之外我没有检查你代码的逻辑。