Android开发初识DataBinding的基本使用
程序员文章站
2022-05-14 15:24:46
...
最近自己开发项目想使用一些自己之前没有使用过的技术,发现dataBinding使用起来非常方便,高效.对于不想使用butterknife和findviewbyId的童鞋可谓是再好不过了.
一,使用dataBinding首先在build中配置,因为其本身在Androidsdk中所以直接配置
android {
.....
dataBinding {
enabled = true
}
}
二,创建xml,通过data,配置variable,声明数据信息,注意type全类名或者通过import 导入全类名;name可以随便命名,不过后面在设置数据的时候是set+”name”的方法名
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<!--第一种-->
<variable
name="s"
type="com.learn.www.videoplay.bean.User" />
<!--第二种-->
<import type="com.learn.www.videoplay.bean.User" />
<variable
name="s"
type="User" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{s.name}" />
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{s.age}" />
<TextView
android:id="@+id/like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{s.like}" />
</LinearLayout>
</layout>
三,在调用的界面设置View和data,其中获取到DataBindingUtil设置后返回值时,需要先build一下会在build地方生成.如图:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityDatabinderBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_databinder);
User user = new User("张三", "28", "打篮球");
binding.setS(user);
}
获取view直接binding.viewId就可以
binding.name.setText("李");
四,设置按钮点击事件
1,为了方便首先定义点击回调接口
/**
* 点击事件接口
*/
public interface PresenterClick extends View.OnClickListener{
@Override
void onClick(View v);
}
2,xml文件中引用和在点击控件的onClick中配置
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="s"
type="com.learn.www.videoplay.bean.User" />
<variable
name="p"
type="com.learn.www.videoplay.base.PresenterClick" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/name"
android:layout_width="wrap_content"
android:onClick="@{(v)->p.onClick(v)}"
android:layout_height="wrap_content"
android:text="@{s.name}" />
<Button
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{(v)->p.onClick(v)}"
android:text="@{s.age}" />
<Button
android:id="@+id/like"
android:layout_width="wrap_content"
android:onClick="@{(v)->p.onClick(v)}"
android:layout_height="wrap_content"
android:text="@{s.like}" />
</LinearLayout>
</layout>
3,在activity中实现PresenterClick 接口,设置presenterClick,通过控件的id进行区别事件的点击事件
//设置
binding.setP(this);
//不同控件事件处理
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.name:
Log.e("databinderAct","点击名字");
break;
case R.id.age:
Log.e("databinderAct","点击年龄");
break;
case R.id.like:
Log.e("databinderAct","点击喜欢");
break;
}
}
上一篇: Windows下安装 node 的版本控制工具 nvm
下一篇: python遍历小写英文字母的方法
推荐阅读
-
Android开发之ContentProvider的使用详解
-
Android开发之SQLite的使用方法
-
Android用户界面开发之:TextView的使用实例
-
在android开发中尽量不要使用中文路径的问题详解
-
Android开发使用自定义View将圆角矩形绘制在Canvas上的方法
-
iOS应用开发中视图控件UIWindow的基本使用教程
-
Android开发之RadioGroup的简单使用与监听示例
-
Android开发中使用Intent打开第三方应用及验证可用性的方法详解
-
Android开发笔记之:Dialog的使用详解
-
Android开发使用json实现服务器与客户端数据的交互功能示例