点击事件¶
更新日期 2021-11-3
- 2021-11-3 更新说明
- 2020-4-20 创建文档
dataBinding中如何设置监听点击事件?
点击事件 onClick¶
准备监听方法¶
以MutableDemoVM
类为例
public class MutableDemoVM {
// ...
public void onClickBack(View view) {
// ...
}
public void onClickAdd(View view) {
// ...
}
}
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
时,建议用2个冒号@{vm::onClickAdd}
来引用方法都可以。
应该使用vm::
随着Jetpack的升级,后面只用2个冒号的形式
在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>
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~