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 ...
随机推荐
- SVM学习笔记2-拉格朗日对偶
下面我们抛开1中的问题.介绍拉格朗日对偶.这一篇中的东西都是一些结论,没有证明. 假设我们有这样的问题:$min_{w}$ $f(w)$,使得满足:(1)$g_{i}(w)\leq 0,1\leq i ...
- Bootstrap3基础 btn-primary/warning... 三类按钮的六种样式
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...
- git如何修改用户名和邮箱名?
答: 使用git config --global --edit即可进行修改
- word2010使用记录
安装时提示: installer无法更新被保护的一个或多个文件, 解决方法是: 将三个dll文件,放在 c:\program files\common files\ms shared\web serv ...
- 一个查表置换的CM
说实话,今天被自己蠢哭了 因为看多了一个字符,以为是输入字符变形后的base64编码,也怪自己没大致看过base64汇编形式,把base64跟完了用py实现完算法才意思到是base64,这是题外话 本 ...
- LuoguP1041 传染病控制
题目地址 题目链接 题解 这里讲一个非正解--贪心+随机化. 贪心的想法是什么? 我们dfs一遍处理出每个节点子树内的节点数量,记为\(siz\). 贪心的砍掉\(siz\)最大的那个子树,在树的形态 ...
- p3168 [CQOI2015]任务查询系统(差分+主席树)
恕我才学浅薄,一开始想到的是树状数组+线段树,然后看了题解才第一次见到了差分这种神奇的科技 仔细想想,主席树的本质不就是前缀和嘛,加上一个差分也是可以的,没想到真是罪过罪过 对时间维护一个差分 在Si ...
- (转) Let’s make an A3C: Theory
本文转自:https://jaromiru.com/2017/02/16/lets-make-an-a3c-theory/ Let’s make an A3C: Theory February 16, ...
- (转载)C# winform 在一个窗体中如何设置另一个窗体的TextBox的值
方法1:修改控件的访问修饰符.(不建议使用此法) public System.Windows.Forms.TextBox textBox1; 在调用时就能直接访问 Form1 frm = new Fo ...
- ngnix简介以及如何实现负载均衡原理
1 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况.那么负载均衡的前提就是要有多台服务器才能实现, ...