点击事件 onClick
准备监听方法
以MutableDemoVM
类为例
public class MutableDemoVM {
// ...
public void onClickBack(View view) {
// ...
}
public void onClickAdd(View view) {
// ...
}
}
里面的2个方法,onClickBack(View view)
和onClickAdd(View view)
用来设置点击监听。
可以看到有一个View作为参数。这是因为要对应上View.OnClickListener的onClick(View v)
方法。
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
layout中设置监听方法
layout中,设置android:onClick
监听
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="vm"
type="com.rustfisher.tutorial2020.databinding.data.MutableDemoVM" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:onClick="@{vm.onClickBack}"
android:padding="10dp"
android:src="@drawable/ic_arrow_back_black_24dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:onClick="@{vm::onClickAdd}"
android:text="+" />
</LinearLayout>
</LinearLayout>
</layout>
可以看到,设置android:onClick
时,用点@{vm.onClickBack}
或者用2个冒号@{vm::onClickAdd}
来引用方法都可以。
在activity中设置数据
public class MutableDemo1 extends AppCompatActivity {
private ActMutableDemo1Binding binding;
private MutableDemoVM mVM = new MutableDemoVM();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.act_mutable_demo1);
binding.setVm(mVM);
// ...
}
}
RadioButton OnCheckedChangeListener
在类中定义好选择的方法,方法签名和CompoundButton.OnCheckedChangeListener.onCheckedChanged(CompoundButton buttonView, boolean isChecked)
一致。
public void choose1(CompoundButton buttonView, boolean isChecked) {
// ...
}
public void choose2(CompoundButton buttonView, boolean isChecked) {
// ...
}
在layout中设置使用方法。
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onCheckedChanged="@{viewModel.choose1}"
android:text="选项1"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onCheckedChanged="@{viewModel.choose2}"
android:text="选项2" />
</RadioGroup>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。