我使用了较早的ButterKnife库。这就是我在多个对象上使用click事件的方式。
@OnClick({ R.id.door1, R.id.door2, R.id.door3 })
public void pickDoor(DoorView door) {
if (door.hasPrizeBehind()) {
Toast.makeText(this, "You win!", LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Try again", LENGTH_SHORT).show();
}
}
没有黄油刀;
override fun onClick(v: View?) {
when (v!!.id) {
R.id.tv -> {
Toast.makeText(this, "You are click textview", Toast.LENGTH_SHORT).show()
}
R.id.btn -> {
Toast.makeText(this, "You are click button.", Toast.LENGTH_SHORT).show()
}
else -> {
}
}
}
单击该过程我可以做什么。我想使用switch或何时执行此操作。听起来像是编写单个setOnClickListener的错误代码。
binding.btnFive.setOnClickListener { MyLog.log("five") }
//or
btnFour.setOnClickListener { MyLog.log("four") }
但是我现在使用数据绑定。我该如何使用数据绑定?
我在寻找什么;
when(binding){ //of course, this doesn't work. exemplary.
btnFirst->{}
btnSecond->{}
}
所以我不想一直写setOnClickListener{}
。我该怎么做?
答案 0 :(得分:2)
要获取View
的ID,您必须致电binding.btn.id
。但是数据绑定建议使用ViewModel
并在layout.xml内单击时进行处理
<Button
.....
android:onClick="@{()-> viewModel.btnClick()}"
..../>
您可以在developer docs
中找到说明。答案 1 :(得分:1)
就像没有黄油刀onClick代码段一样
android { ... dataBinding { 启用=真 } }
仅更改
和xml中 将您的xml放在此标记中
答案 2 :(得分:0)
首先在kotlin,您不需要布局中的任何分配视图,您可以将直接ID用作setcontentview的视图。