Android Data Binding将参数传递给onClick方法 [英] Android Data Binding pass arguments to onClick method

查看:881
本文介绍了Android Data Binding将参数传递给onClick方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可以使用数据绑定库将自定义参数传递给onClick方法?我有我的布局xml文件,我需要使用onClickListener:

 <?xml version =1.0encoding =utf -8?> 
< layout ...>

< data>
< variable
name =viewModel
type =com.productivity.tiktak.ui.tracker.viewModel.CategoryViewModel/>
< variable
name =callback
type =com.productivity.tiktak.ui.tracker.TrackerAdapter/>
< / data>

< android.support.v7.widget.CardView
android:onClick =@ {callback.onCategoryClick(viewModel)}
...
android :layout_width =match_parent
android:layout_height =wrap_content>

<! - - 一些垃圾 - >

< /android.support.v7.widget.CardView>
< / layout>

并且有一个点击处理程序:

  public void onCategoryClick(View view,CategoryViewModel categoryViewModel){
//处理程序代码...
}
pre>

可以将我的CategoryViewModel对象从xml传递给点击处理程序?

解决方案

您可以使用lambda表达式。

  android:onClick =@ {() - > callback.onCategoryClick (viewModel)}

如果您需要该视图,您也可以传递: p>

  android:onClick =@ {(v) - > callback.onCategoryClick(v,viewModel)}


It's possible to pass custom arguments to onClick method using Data Binding Library? I have my layout xml file where i need to use onClickListener:

    <?xml version="1.0" encoding="utf-8"?>
<layout ...>

    <data>
        <variable
            name="viewModel"
            type="com.productivity.tiktak.ui.tracker.viewModel.CategoryViewModel"/>
        <variable
            name="callback"
            type="com.productivity.tiktak.ui.tracker.TrackerAdapter"/>
    </data>

    <android.support.v7.widget.CardView
        android:onClick="@{callback.onCategoryClick(viewModel)}"
        ...
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

       <!-- ... Some trash -->

    </android.support.v7.widget.CardView>
</layout>

and a have my click handler:

     public void onCategoryClick(View view, CategoryViewModel categoryViewModel){
         //handler code...
        }

it's possible to pass my CategoryViewModel object from xml to click handler?

解决方案

You can use a lambda expressions.

 android:onClick="@{() -> callback.onCategoryClick(viewModel)}"

If you need the view, you can pass that as well with:

 android:onClick="@{(v) -> callback.onCategoryClick(v, viewModel)}"

这篇关于Android Data Binding将参数传递给onClick方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆