我正在接近 kotlin (以及移动编码),我正在尝试设置一个侦听器,以便在单击多个 textView 的每个人时运行相同的功能。我在 SO 上找到了下面的代码(抱歉缺少链接:我无法再次找到它),但是当我尝试将 textView 传递给函数时,我在最后一个“it”上收到错误。
val txtV_Ans1 = findViewById(R.id.txtV_Aswer1) as TextView
val txtV_Ans2 = findViewById(R.id.txtV_Aswer2) as TextView
val txtV_Ans3 = findViewById(R.id.txtV_Aswer3) as TextView
val txtV_Ans4 = findViewById(R.id.txtV_Aswer4) as TextView
val txtVs_Ans = arrayListOf(
txtV_Ans1,
txtV_Ans2,
txtV_Ans3,
txtV_Ans4
)
txtVs_Ans.forEach { it.setOnClickListener { txtV_Fill(it, "You clicked here")} }
fun txtV_Fill(txtV: TextView, txtToInsert: String){
txtV.text = txtToInsert
}
您提供的代码看起来大部分是正确的,但您遇到了一个问题,因为 forEach lambda 中的 it 引用并不引用此上下文中的 TextView。您应该使用更明确的方法将 TextView 传递给函数
txtV_Fill
。您可以使用SharedClickListener。清洁使用
您可以使用它,并传递任意数量的 TextView。
例子: