Android,XML格式的Checkbox监听器?

做这样的事情是可能的

XML:

 

Java的:

 public void launchContactAdder(View v) { Intent i = new Intent(this, ContactAdder.class); startActivity(i); } 

但有一个要求是,该方法必须是公开的,无效的,最重要的是将View作为参数。

现在我想用Checkbox按钮做同样的事情。 Checkbox有android:onclick属性,但是在Android教程(http://developer.android.com/resources/samples/ContactManager/index.html)中我可以看到这段代码

 showInvisibleControl.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.d(TAG, "mShowInvisibleControl changed: " + isChecked); showInvisible = isChecked; populateContactList(); } }); 

所以有一个onCheckedChanged(CompoundButton buttonView,boolean isChecked)方法。 有没有办法通过XML来做到这一点? 没有android:onCheckedChange属性,只有android:onClick属性,但正如我上面所写,该属性的名称必须有相应的方法名称,它将View作为参数,但从上面的代码我明白我必须有一个方法CompoundButton和boolean参数。

以“XML方式”以任何方式做到这一点?

我发现Spinner Widget中的onItemSelected事件存在类似的问题。 显然Android团队认为这足以让我们将XML发送到onClick事件:S。

官方文档: https : //developer.android.com/guide/topics/ui/controls/checkbox.html

   

现在可以使用数据绑定库来完成此操作。 首先,您需要创建一个处理程序类(在此示例中,我将其称为MainActivityHandlers)。 在这个处理程序类中,用相应的实现定义一个方法(例如名称是method1)然后在你的布局文件中,你只需要实现:

  ...    ...  

你很高兴。 更多信息: https : //developer.android.com/topic/libraries/data-binding/index.html

我相信使用lambda更方便:

   

有关详细信息,请参阅此

另外,我发现使用双向绑定对checkbox非常有用:

  

请注意, 双向绑定设置值之前调用onCheckedChanged