精品购物指南招聘,功夫派红人堂,刀剑神域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) { }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对移动技术网的支持。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论