DataBinding事件绑定【二】
来源:互联网 发布:代理商域名转到阿里云 编辑:程序博客网 时间:2024/06/05 20:20
DataBinding事件绑定有两种方式
Method References(方法引用)和Listener Bindings(事件监听)
就先view设置点击事件也有两种方式view.setOnClickListener(View view)以及在XML中定义android:onClick=”“。
简单运行了textview和button的点击效果如下:
//XML代码如下<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <data> <!--绑定数据--> <variable name="testBean" type="com.example.minwenping.databindingdemo.TestBean" /> <!--绑定事件--> <variable name="eventListener" type="com.example.minwenping.databindingdemo.MainActivity.ListenerBinding" /> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.minwenping.databindingdemo.MainActivity"> <!--备注先绑定之后在写数据或者事件--> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center" android:onClick="@{eventListener::onClickText}" android:text="@{testBean.tvText}" /> <Button android:layout_width="match_parent" android:layout_height="60dp" android:layout_marginTop="16dp" android:onClick="@{() -> eventListener.onTextChanged(testBean) }" android:text="@{testBean.btnText}" /> </LinearLayout></layout>//Activity代码public class MainActivity extends AppCompatActivity { TestBean bean = new TestBean("text新数据", "buttonXinshuju"); private ActivityMainBinding dataBinding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //contentview都绑定这里 dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main); dataBinding.setTestBean(bean); //第二种写法// dataBinding.setVariable(BR.testBean,bean); dataBinding.setEventListener(new ListenerBinding()); } //事件方法引用 public class ListenerBinding { //Method References方法直接引用类,但是参数规定死了 public void onClickText(View v) { Toast.makeText(MainActivity.this, "点击:"+ ((TextView) v).getText(), Toast.LENGTH_SHORT).show(); } //Listener Bindings 能够自定义传参数,比较灵活 public void onTextChanged(TestBean testBean){ testBean.setTvText("Listener Bindings 能回传参数"); dataBinding.setTestBean(testBean); } }}
注意:第二种方式的事件监听有Java8的lambda 表达式。
阅读全文
0 0
- DataBinding事件绑定【二】
- DataBinding系列二、绑定事件处理方法
- Android DataBinding(二) 事件绑定
- DataBinding的事件绑定
- MvvmLight(二)数据绑定DataBinding
- Android DataBinding (二) 事件处理
- Android官方数据绑定框架DataBinding(二)
- Android官方数据绑定框架DataBinding(二)
- Android官方数据绑定框架DataBinding(二)
- Android官方数据绑定框架DataBinding(二)
- DataBinding 绑定
- Android DataBinding(数据绑定)详解(二)
- 仅对具有 DataBinding 事件的对象提供数据绑定表达式支持。System.Web.UI.WebControls.HyperLinkField 没有 DataBinding 事件。
- 数据绑定技术-databinding
- 数据绑定框架:Databinding
- Android DataBinding 双向绑定
- DataBinding绑定Listview
- android databinding绑定教程
- Blackhat 2017&Defcon 25学习笔记
- 在java中关于使用scanner接受char类型字符的方法
- C# WPD PortableDeviceApiLib获取便携设备列表
- BZOJ 1050: [HAOI2006]旅行comf
- opencv 频率域滤波实例
- DataBinding事件绑定【二】
- poj -3684 小球弹性碰撞
- (转)python图像操作
- 动态规划之硬币表示问题
- HDU 6034 Balala Power!(多校1)
- Centos 7.3安装Zabbix3.2
- C# WPD (windows portable devices) 检测WPD设备 获取设备信息
- Ubuntu C++ 环境的搭建
- Effect Java 阅读笔记(一)