最近在学习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) {

    }

总结

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

DataBinding onClick的七种点击方式的更多相关文章

  1. swift 中如何定义接口

    匿名接口,swift比java更随意,连接口名字也不用,直接定义直接传递,一门牛哄哄的语言

  2. 添加按钮(swift)

    添加按钮1.定义button2.使用

  3. 《从零开始学Swift》学习笔记Day 65――Cocoa Touch设计模式及应用之选择器

    在C语言在提供一种函数指针技术,Objective-C和Swift语言都提供选择器类型,它是C语言函数指针的面向对象替代技术。选择器在Cocoa和CocoaTouch中的目标动作、通知和委托等模式中方法的调用实现的关键。穷其根本是源自于Objective-C多重参数方法命名规律。

  4. android – onClick在转换后不起作用

    我正在尝试学习简单的TransitionManager工作,但我有点卡住……我的目标是通过图像点击在两个场景之间进行切换.但在第一次图像点击和第一次场景变换后,我无法捕捉图像点击…这是我的片段代码:片段xml:scene1xml:scene2xml:你知道我哪里错了吗?解决方法您需要再次设置onClickListeners才能使其正常工作.在onCreateView中,您可以直接调用setListeners方法.

  5. 如何将Android DataBinding绑定到菜单?

    因为它支持android中的数据绑定菜单?

  6. android – DataBinding可以干扰本地化活动吗?

    android:text=“@string/”…谢谢.解决方法弄清楚发生了什么.它与ViewBinding无关.该活动以横向模式启动–由于某种原因重置应用程序区域设置.Thisanswer帮助我解决了这个问题.

  7. android – 在尝试将一些代码放入builder.setPositiveButton的onClick()方法时获取’无法解析方法’addOnCompletionListener()’…’

    我正在尝试在AlertDialog.Builder的builder.setPositiveButton方法中放置一些代码.问题是我收到以下错误:无法解析方法’addOnCompletionListener(匿名android.content.DialogInterface.OnClickListener,匿名com.google.android.gms.tasks.OnCompletionList

  8. android – 如果使用主题,则无法在活动类TintContextWrapper中为onClick找到onClick(View)方法

    我从运行4.2.2的设备中得到了这个问题…

  9. android – listView onclick转到一个新活动

    我有一个listview,我想从我按下的每个列表项目去一个新的活动.这是我的代码..}解决方法在该方法中使用switch语句:将类名更改为每个Activity需要的名称.

  10. 如何使用Android Databinding获取包含的视图?

    解决方法您需要为include语句提供ID:现在您可以访问包含视图:如果包含的布局是绑定布局,则include将是生成的绑定.例如,如果view.xml是:那么布局字段将是一个ViewBinding类:

随机推荐

  1. Flutter 网络请求框架封装详解

    这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Android单选按钮RadioButton的使用详解

    今天小编就为大家分享一篇关于Android单选按钮RadioButton的使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  3. 解决android studio 打包发现generate signed apk 消失不见问题

    这篇文章主要介绍了解决android studio 打包发现generate signed apk 消失不见问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  4. Android 实现自定义圆形listview功能的实例代码

    这篇文章主要介绍了Android 实现自定义圆形listview功能的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 详解Android studio 动态fragment的用法

    这篇文章主要介绍了Android studio 动态fragment的用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. Android用RecyclerView实现图标拖拽排序以及增删管理

    这篇文章主要介绍了Android用RecyclerView实现图标拖拽排序以及增删管理的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

  7. Android notifyDataSetChanged() 动态更新ListView案例详解

    这篇文章主要介绍了Android notifyDataSetChanged() 动态更新ListView案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  8. Android自定义View实现弹幕效果

    这篇文章主要为大家详细介绍了Android自定义View实现弹幕效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. Android自定义View实现跟随手指移动

    这篇文章主要为大家详细介绍了Android自定义View实现跟随手指移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. Android实现多点触摸操作

    这篇文章主要介绍了Android实现多点触摸操作,实现图片的放大、缩小和旋转等处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部