我想为TextView
创建一系列点击侦听器。
private class ClickListener(setValue: (Int) -> (Unit), getValue: () -> (Int)) : View.OnClickListener {
override fun onClick(v: View?) {
val oldValue = getValue()
val newValue = v?.text.toString().toInt()
if (newValue != oldValue) {
if (oldValue != 0) {
v?.isSelected = false
v?.clearFocus()
} else {
v?.isSelected = true
v?.requestFocus()
setValue(newValue)
}
}
}
}
在这里,我使用lambda(setter和getter)创建了一个自定义的Click侦听器。我在Fragment中创建lambda,在其中将点击监听器设置为TextView
。
我可以在构造函数(setValue()
)中调用getValue()
和init
,但不能在onClick()
中使用它。
如果我致电getValue2()
,则会收到另一个错误:
答案 0 :(得分:4)
将getValue()
和setValue()
声明为属性:
private class ClickListener(
val setValue: (Int) -> Unit,
val getValue: () -> Int
) : View.OnClickListener {