android -------- Data Binding的使用(二)
分享一下Data Binding在项目中一些常用的基础,点击事件和输入框的一些操作。
DataBinding允许我们在xml中view的一些事件属性(如onClick等)中填写DataBinding表达式,也可以通过绑定listener的方式去实现。
首先写一个类来表示点击事件
public class Presenter{public void onClick(View view){
Toast.makeText(MainActivity.this,"123",Toast.LENGTH_LONG).show();
}
public void onClickDataBinding(Employee employee){
Toast.makeText(MainActivity.this,employee.getLastName(),Toast.LENGTH_LONG).show();
}
}
布局文件则:(data中添加该类Presenter)
<data>
<variable
name="presenter"
type="com.zhangqie.databinding.demo1.MainActivity.Presenter"/>
</data>
事件代码:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击事件"
android:onClick="@{presenter::onClick}"
/>
<!-- android:layout_margin="@{@dimen/n1 + @dimen/n2}"-->
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击事件传值"
android:onClick="@{() -> presenter.onClickDataBinding(employee)}"
/>
这样我们的事件绑定就完成了,运行起来效果就和往常的一样了。
接下来说的就是 输入框EditText中输入自动刷新数据,ObservableArrayMap,ObservableArrayList了
首先创建一个User类
public class User extends BaseObservable {
public User(String frstName,String lastName){
this.frstName = frstName;
this.lastName = lastName;
observableArrayMap.put("zq","zhhhhh");
list.add("aaa");
list.add("bbb");
}
private String frstName;
private String lastName;
public ObservableArrayMap<String,String> observableArrayMap = new ObservableArrayMap<>();
public ObservableArrayList<String> list = new ObservableArrayList<>();
@Bindable
public String getFrstName() {
return frstName;
}
public void setFrstName(String frstName) {
this.frstName = frstName;
//指定刷新UI
notifyPropertyChanged(com.zhangqie.databinding.BR.frstName);
}
@Bindable
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
//全部刷新
//notifyChange();
}
}
可以看到 刷新数据操作,ObservableArrayMap,ObservableArrayList
再添加一个输入框的事件监听类
public class Presenter{
public void onTextChanged(CharSequence s, int start, int before, int count){
user.setFrstName(s.toString());
}
}
布局文件:(布局中有 添加 ObservableArrayMap 数据和 ObservableArrayList的数据了)
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable
name="user"
type="com.zhangqie.databinding.demo2.User" /> <variable
name="presenter"
type="com.zhangqie.databinding.demo2.Demo2.Presenter" />
</data> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onTextChanged="@{presenter.onTextChanged}" /> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.frstName}" /> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{user.observableArrayMap["zq"]}' /> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text='@{user.list[0]}' /> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.list[1]}" />
</LinearLayout> </layout>
Activity类
public class Demo2 extends AppCompatActivity {
User user = new User("切切歆语","mis");
DemoActivityBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.demo_activity);
binding.setPresenter(new Presenter());
binding.setUser(user);
}
//输入框监听
public class Presenter{
public void onTextChanged(CharSequence s, int start, int before, int count){
user.setFrstName(s.toString());
}
}
}
当输入信息是就可以看见第一个TextView在实时更新了。
效果图:待录制

android -------- Data Binding的使用(二)的更多相关文章
- Android Data Binding代码实践(告别findViewById)(四)
Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点 ...
- Android Data Binding实战(一)
在今年Google I/O大会上,Google推出Design Library库的同时也推出了Android Data Binding,那么什么是Data Binding?其名曰数据绑定,使用它我们可 ...
- Android Data Binding Library
Data Binding Library Data Binding Library是一个支持库,允许您使用声明格式(而不是编程)将布局中的UI组件与应用程序中的数据源绑定. 布局通常在调用UI框架方法 ...
- Android Data Binding
Android官方数据绑定框架DataBinding, 1.什么是DataBinding 2.DataBinding基础用法 3.DataBinding原理 4.表达式 5.null检查 6.incl ...
- Android Data Binding(数据绑定)用户指南
Android Data Binding(数据绑定)用户指南 http://www.jianshu.com/p/b1df61a4df77 https://github.com/LyndonChin/M ...
- android data binding jetpack VIII BindingConversion
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- android data binding jetpack VII @BindingAdapter
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- android data binding jetpack VI 清理一些概念。BR 运算表达式
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- android data binding jetpack V 实现recyclerview 绑定
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- android data binding jetpack IV 绑定一个方法另一种写法和参数传递
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
随机推荐
- CNN Mnist
参考链接:https://www.codeproject.com/articles/16650/neural-network-for-recognition-of-handwritten-digi#I ...
- ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(1)
1.SQL相关 名称 类型 说明 BaseSQL String 没有被AddWhere.SetOrderBy.FilterSQL等方法处理过的原始SQL语句 FinalSQL String 被AddW ...
- Java 使用命令对堆线程分析
一.dump基本概念 在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题.这些文件记录了JVM运行期间的内存占用.线程执行等情况,这就是我们常说的 ...
- 【做题】BZOJ2342 双倍回文——马拉车&并查集
题意:有一个长度为\(n\)的字符串,求它最长的子串\(s\)满足\(s\)是长度为4的倍数的回文串,且它的前半部分和后半部分都是回文串. \(n \leq 5 \times 10^5\) 首先,显然 ...
- Java基础 【类之间的关系】
在Java与其他面向对象设计语言中,类之间常见的关系有6种 分别是: 依赖.关联.聚合.组合.继承.实现,他们的耦合度依次增强. 其中,关联.聚合.组合关系仅仅是在语义上有所区别,所谓语义就是指上下 ...
- 51nod P1305 Pairwise Sum and Divide ——思路题
久しぶり! 发现的一道有意思的题,想了半天都没有找到规律,结果竟然是思路题..(在大佬题解的帮助下) 原题戳>>https://www.51nod.com/onlineJudge/ques ...
- Robot Framework+AutoItLibrary+AutoIt使用
使用记录: 1. 打开被测桌面程序: 2. 打开AutoIt,用finder tool拖拽到控件上,可以看到控件的信息: 3. 如果空间的Title.Control Info抓不到,可以看Mouse下 ...
- 总结Javascript中数组各种去重的方法
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...
- python接口测试模版
"""Test case implementation""" import sys import functools import diff ...
- 使用openlayers 3 在线加载天地图及GeoServer发布的地图
使用openlayers3来加载天地图卫星图和标注图层,GeoServer发布地图,一并用openlayers测试加载出来,顺便实现了7种地图控件.下面直接贴代码: <!DOCTYPE html ...