如何在android上接收事件复选框检查更改?
当复选框被启用或禁用时,接收和发送事件的正确方式是什么 在C#中,我可以轻松地双击,所有代码都可以为我完成。但在安卓系统中,它似乎有点模糊。我曾想过使用触摸事件处理程序,但如果用户有键盘,它将无法检测到更改,因为它不是触摸。我认为android应该有一个用于复选框状态更改的本机事件。由于复选框(最终)扩展了视图,您可以使用标准的OnClickListener来检测用户实际点击复选框的时间(与ListView更新相反):如何在android上接收事件复选框检查更改?,android,events,checkbox,Android,Events,Checkbox,当复选框被启用或禁用时,接收和发送事件的正确方式是什么 在C#中,我可以轻松地双击,所有代码都可以为我完成。但在安卓系统中,它似乎有点模糊。我曾想过使用触摸事件处理程序,但如果用户有键盘,它将无法检测到更改,因为它不是触摸。我认为android应该有一个用于复选框状态更改的本机事件。由于复选框(最终)扩展了视图,您可以使用标准的OnClickListener来检测用户实际点击复选框的时间(与ListView更新相反): CheckBox repeatChkBx = ( CheckBox ) fi
CheckBox repeatChkBx = ( CheckBox ) findViewById( R.id.repeat_checkbox );
repeatChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
// perform logic
}
}
});
试试这个
在科特林:
checkBoxView.setOnCheckedChangeListener { _, isChecked ->
print("checked: $isChecked")
}
虽然这是正确的答案,但我很好奇,如果复选框位于ListView项中,并且每次用户滚动经过onCheckedChange时都会调用它,那么最好的方法是什么。有没有办法区分是由用户还是由listview更新启动的?^这条@Rmooney的评论是金色的!我有一个问题与RecyclerView适配器,每次我滚动它疯了叫不止一次!谢谢在适配器中,当您为该特定支架设置checkchange时。首先删除侦听器,更改值,然后读取侦听器。复选框本身会强制调用侦听器,因此您必须删除它才能在不触发它的情况下设置值。如果用户决定拖动开关而不是单击开关,则不会触发该选项。@Silvia H复选框不是开关。你不能在复选框上拖拽任何东西。通过自己键入代码而不是按自己的方式进行编码,没有什么“模糊”的地方。
CheckBox checkbox=(CheckBox)findViewById(R.id.checkbox);
checkbox.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (checkbox.isChecked())
{
//Perform action when you touch on checkbox and it change to selected state
}
else
{
//Perform action when you touch on checkbox and it change to unselected state
}
}
});
checkBoxView.setOnCheckedChangeListener { _, isChecked ->
print("checked: $isChecked")
}