Android官方DataBinding(八):Lambda长表达式事件处理
2018-01-04 00:00
344 查看
Android官方DataBinding(八):Lambda长表达式事件处理
写一个例子说明Android DataBinding如何实现Lambda长表达样式的事件处理。
从Android的View的onClick入手。
写一个User.java的数据模型:
写一个名为Util.java的类,该类定义了一个onMyClick(User u)的事件:
写activity_main.xml:
注意Util的引入以及事件绑定的符号写法。
测试的MainActivity.java:
代码运行,在button按钮下方输入zhangphil:
点击button按钮后的logcat输出:
附录:
1,《Android官方DataBinding简例(一)》链接:http://blog.csdn.net/zhangphil/article/details/77322530
2,《Android官方DataBinding(二):动态数据更新notifyPropertyChanged》链接:http://blog.csdn.net/zhangphil/article/details/77328688
3,《Android官方DataBinding(三):RecyclerView 使用ViewDataBinding更新数据》链接:http://blog.csdn.net/zhangphil/article/details/77367432
4,《Android官方DataBinding(四):BindingAdapter》链接:http://blog.csdn.net/zhangphil/article/details/77374211
5,《Android官方DataBinding(五):ObservableMap,ObservableArrayMap》链接:http://blog.csdn.net/zhangphil/article/details/77448933
6,《Android官方DataBinding(六): @= 操作符进行双向绑定》链接:http://blog.csdn.net/zhangphil/article/details/77454045
7,《Android官方DataBinding(七):BindingMethods与BindingMethod》链接:http://blog.csdn.net/zhangphil/article/details/77479843
写一个例子说明Android DataBinding如何实现Lambda长表达样式的事件处理。
从Android的View的onClick入手。
写一个User.java的数据模型:
package zhangphil.test; import android.databinding.BaseObservable; import android.databinding.ObservableField; /** * Created by Phil on 2017/8/17. */ public class User extends BaseObservable { public final ObservableField<String> content = new ObservableField<>(); }
写一个名为Util.java的类,该类定义了一个onMyClick(User u)的事件:
package zhangphil.test; import android.util.Log; /** * Created by Phil on 2017/8/18. */ public class Util { public void onMyClick(User u) { Log.d("按钮事件", u.content.get() + ""); } }
写activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="util" type="zhangphil.test.Util" /> <variable name="user" type="zhangphil.test.User" /> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="@{()->util.onMyClick(user)}" android:text="按钮" /> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:text="@={user.content}" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.content}" /> </LinearLayout> </layout>
注意Util的引入以及事件绑定的符号写法。
测试的MainActivity.java:
package zhangphil.test; import android.databinding.DataBindingUtil; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import zhangphil.test.databinding.ActivityMainBinding; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); User user = new User(); binding.setUser(user); Util util = new Util(); binding.setUtil(util); } }
代码运行,在button按钮下方输入zhangphil:
点击button按钮后的logcat输出:
08-23 10:31:13.609 17062-17062/zhangphil.test D/按钮事件: zhangphil
附录:
1,《Android官方DataBinding简例(一)》链接:http://blog.csdn.net/zhangphil/article/details/77322530
2,《Android官方DataBinding(二):动态数据更新notifyPropertyChanged》链接:http://blog.csdn.net/zhangphil/article/details/77328688
3,《Android官方DataBinding(三):RecyclerView 使用ViewDataBinding更新数据》链接:http://blog.csdn.net/zhangphil/article/details/77367432
4,《Android官方DataBinding(四):BindingAdapter》链接:http://blog.csdn.net/zhangphil/article/details/77374211
5,《Android官方DataBinding(五):ObservableMap,ObservableArrayMap》链接:http://blog.csdn.net/zhangphil/article/details/77448933
6,《Android官方DataBinding(六): @= 操作符进行双向绑定》链接:http://blog.csdn.net/zhangphil/article/details/77454045
7,《Android官方DataBinding(七):BindingMethods与BindingMethod》链接:http://blog.csdn.net/zhangphil/article/details/77479843
相关文章推荐
- Android官方DataBinding(八):Lambda长表达式事件处理
- Android DataBinding (二) 事件处理
- 清理(委托类型实例)事件处理(实例)的函数及Lambda表达式
- Android官方开发文档Training系列课程中文版:手势处理之ViewGroup的事件管理
- Android官方开发文档Training系列课程中文版:手势处理之ViewGroup的事件管理
- Android面试题--事件处理
- Android Touch事件的处理机制
- Android 开发使用 Java 8 中Lambda 表达式功能
- Android UI事件处理
- Android中UI控件的详细介绍(八)——Android事件处理机制的概述
- Android零基础入门第66节:RecyclerView点击事件处理
- [Android开发]使用ViewPagerIndicator开源库处理其中事件分发机制
- Android热插拔事件处理流程
- 【Android】事件传递:向下拦截,向上处理
- Android中设计具有背景图的按钮—ImageButton的焦点及事件处理
- Android事件冲突处理
- Android事件处理之二 基于回调的事件处理
- Android的Touch事件处理机制介绍
- android处理单击双击和滑动事件