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 ...
随机推荐
- topcoder srm 525 div1
problem1 link 最后剩下的是中间的一个矩形.所以可以直接枚举这个矩形,如果它含有的硬币个数等于$K$,则再计算移动的最少次数,更新答案. problem2 link 首先,每个节点发送每种 ...
- ODAC(V9.5.15) 学习笔记(三)TOraSession(4)
4. 数据库信息 名称 类型 说明 GetDatabaseNames 获取对应的数据库对象名称列表 GetSequenceNames GetStoredProcNames GetTableNames ...
- 《HTML与CSS 第一章 认识HTML》读书笔记
一.Web让广播明星黯然失色 要建立Web页面,需要创建用超文本标记语言(HyperText Markup Language,HTML)编写的文件,把它们放在一个Web服务器上 二.Web服务器能做什 ...
- Icons - Material Design各种ICON图标大全
Icons - Material Design https://material.io/tools/icons/?icon=account_balance&style=baseline
- js二叉树
插入数值//初始化node对象function Node ( data) { this.data = data; this.left = null; this.right = null;}// 定义插 ...
- WSL及Linux入门
win10内置linux子系统(Windows Subsystem for Linux),可以不用安装Vmware等虚拟机学习linux啦. wsl开启方式 设置打开开发人员模式. 控制面板-程序和功 ...
- 【.Net】在windows server 2016 和Windows10这些server上安装.net fw3.5
一般就是打开server manager. 一直next到add feature 讲net3.5勾选 发现需要指定一个路径是什么 source\sxs之类的 下载microsoft-windows-n ...
- jd面试之感
一面问题:问题都回答的很好,顺利进入二面 1.单点登录的改造和原理 2.hashmap 3.jvm:堆.方法区.栈,本地方法栈,gc,gc的方式 4.spring的ioc.aop的实现方式cglib和 ...
- Linux安装svn客户端
Red Hat Linux 1.安装$ yum install subversion 2.常见问题1.执行svn报错:cannot set LC_CTYPE localevi /etc/profile ...
- HDU 5724 Chess(SG函数+状态压缩)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5724 题意: 现在有一个n*20的棋盘,上面有一些棋子,双方每次可以选择一个棋子把它移动到其右边第一 ...