Android DataBinding(二) 事件绑定
来源:互联网 发布:淘宝企业店铺出售 编辑:程序博客网 时间:2024/05/21 22:50
上一章内容是DataBinding的基础使用,本节来看一下DataBinding的事件绑定。
还是在上一节的基础上,我们添加了两个EditText和一个Button。
EditText监听
首先,为EditText绑定一个事件,当EditText中的内容发生改变的时候,下面的一个TextView也随之发生改变。效果如下:
然后看一下是如何实现的。
我们在MainActivity的onCreate中新建一个Event类,声明一个onTextChanged方法。
public class Event { public void onTextChanged(CharSequence s, int start, int before, int count) { person.setName(s.toString()); binding.setPerson(person); } }
onTextChanged(…)方法是EditText本身具有的监听接口TextWatcher中的一个回调方法。(这些我们都要自己去寻找,保证方法名和参数正确,否则无法通过编译)
在该方法中我们将EditText改变后的文字内容赋给person对象的Name属性,再次setPerson(),就可以改变Name TextView中的文字。
接下来就要在Layout文件中添加<variable>
<variable name="event" type="com.david.databindingdemo.MainActivity.Event" />
<EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="42dp" android:ems="10" android:onTextChanged="@{event.onTextChanged}" android:hint="Name" />
@{ }通用写法,在书写过程中发现Android studio对DataBinding的支持还是不够,不会有代码提示,全靠我们手写,要注意不要写错了。
Sync Project,编译器会帮我们生成event的set方法,如下,绑定完成。这样就实现了前面展示的动态图功能。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// setContentView(R.layout.activity_main); binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.setPerson(person); binding.setEvent(new Event()); }
TextView点击事件
首先第一个TextView的实现
还是在Event方法中添加一个onClick方法,实现弹出一个Toast提示
public class Event { ...... public void onClick(View view) { Toast.makeText(MainActivity.this, "click", Toast.LENGTH_SHORT).show(); } }
Layout文件中我们已经添加过Event,所以直接修改TextView的属性即可。
<TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="@{event.onClick}" android:text="@{Person.name}" android:layout_below="@+id/editText2" android:layout_alignParentStart="true" android:layout_marginBottom="10dp" />
非常简单就完成了实现。
第二个TextView点击后会弹出当前Person对象的Name属性值
首先还是Event类中添加一个方法(命名随意,确保Java代码和xml文件中名称相同即可)
public class Event { public void onTextChanged(CharSequence s, int start, int before, int count) { person.setName(s.toString()); binding.setPerson(person); } public void onClick(View view) { Toast.makeText(MainActivity.this, "click", Toast.LENGTH_SHORT).show(); } public void onClickBind(Person person) { Toast.makeText(MainActivity.this, person.getName(), Toast.LENGTH_SHORT).show(); } }
在onClickBind方法中将Person对象当做一个参数传回。
然后是Layout文件中
<TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentStart="true" android:layout_marginTop="30dp" android:layout_below="@+id/textView" android:onClick="@{() -> event.onClickBind(Person)}" android:text="@{Person.age}" />
只是属于lambda表达式的写法,有兴趣可以去学习一下。这里我们调用event.onClickBind(Person)
,将当前的Person对象传给上面Event中onClickBind方法。这样就完成了前面动态图点击TextView弹出Toast的功能。
- Android DataBinding(二) 事件绑定
- DataBinding事件绑定【二】
- DataBinding系列二、绑定事件处理方法
- Android DataBinding (二) 事件处理
- Android DataBinding(数据绑定)详解(二)
- Android官方数据绑定框架DataBinding(二)
- Android官方数据绑定框架DataBinding(二)
- Android官方数据绑定框架DataBinding(二)
- Android官方数据绑定框架DataBinding(二)
- DataBinding的事件绑定
- Android DataBinding介绍(一)——简介、数据及方法事件绑定
- Android databinding 双向绑定(Demo)
- Android DataBinding 双向绑定
- android databinding绑定教程
- MvvmLight(二)数据绑定DataBinding
- Android Databinding 点击事件
- Android Databinding 从入门到转行(二)添加点击事件
- Android 数据绑定框架DataBinding
- 【福利】成为专业程序员路上用到的各种优秀资料、神器及框架
- 17.1 案例开发
- Qt实现多国语言切换
- CocoaPods 2016最新安装和使用说明
- NYOJ-123 士兵杀敌(四) (线段树)
- Android DataBinding(二) 事件绑定
- URL中“#” “?” &“”号的作用
- 《JAVA与模式》之适配器模式
- Leetcode——276.Paint Fence
- Hibernate小知识点(many to one ,one to one的属性解释)
- c#拼接List
- 向SQL Server中的现有表中添加具有默认值的列
- 《机器学习实战》学习笔记之k-近邻算法3
- windows server 2012将计算机图标添加到桌面