当前位置: 移动技术网 > IT编程>移动开发>Android > DataBinding onClick的七种点击方式

DataBinding onClick的七种点击方式

2019年09月06日  | 移动技术网IT编程  | 我要评论

精品购物指南招聘,功夫派红人堂,刀剑神域24

最近在学习databinding的使用,中间遇到了不少的坑,记录以下,帮助以后学习databinding的朋友。

有一个 viewmodel 类,有一个 xml,xml 绑定了 viewmodel .

1. @{click}

//xml:
<button
   android:layout_width="match_parent"
   android:layout_height="48dp"
   android:onclick="@{click}"
/>

//viewmodel:
public void click(view view){

}

2. 不带参数:@{() -> viewmodel.click()}

//xml:
<button
   android:layout_width="match_parent"
   android:layout_height="48dp"
   android:onclick="@{() -> viewmodel.click()}"
/>

//viewmodel:
public void click(){

}

3. @{viewmodel::click}

//xml:
<button
   android:layout_width="match_parent"
   android:layout_height="48dp"
   android:onclick="@{viewmodel::click}"
/>

//viewmodel:
public void click(view view){

}

tip: 如果是在其它类中设置点击方法,如 eventhandlers.java, 其实与上面一致

//xml:
<variable
  name="handler"
  type="com.xx.xxx.eventhandlers" />

<button
   android:layout_width="match_parent"
   android:layout_height="48dp"
   android:onclick="@{handler::click}" />

// ui类:绑定handler,如绑定viewmodel那样
eventhandlers handler = new eventhandlers();
binding.sethandler(handler);

// eventhandlers 执行click事件
public void click(view view){
  //do
}

4. 带参数:@{() -> viewmodel.click(obj.id)}

//xml:
<variable
  name="viewmodel"
  type="com.xx.xxx.viewmodel" />

<variable
  name="obj"
  type="com.xx.xxx.user" />
<button
   android:layout_width="match_parent"
   android:layout_height="48dp"
   android:onclick="@{() -> viewmodel.click(obj.id)}"
/>

//viewmodel:
public void click(long id){
   //do  
}

5. observablefield<onclicklistener>

//xml:
 <variable
    name="iconview"
    type="com.xxxxx.iconview" />

 <relativelayout
    android:id="@+id/rl_icon_view"
    android:layout_width="match_parent"
    android:layout_height="55dp"
    android:onclick="@{iconview.clicklistener}"
    >  

//iconview:
 public final observablefield<onclicklistener> clicklistener=new observablefield<>();

//xml所在的activity类:
 binding.iconview.clicklistener.set(new view.onclicklistener() {
     @override
     public void onclick(view v) {
       toast.maketext(getapplicationcontext(),"iconview",toast.length_short).show();
     }
 });

6. 带参数

 android:onclick="@{()->loadingmodel.chooselang(2)}"
 public void chooselang(int language) {
    logutil.i(tag, "language=" + language);

 }

7. 带view的参数

//xml:
<variable
    name="listener"
    type="test.carrie.todomvvmtest.ui.ontaskitemlistener"/>

android:onclick="@{(view)->listener.oncheckboxclick(obj,view)}"


//adapter:
 public void oncheckboxclick(todo entity, view v) {

    }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网