【Android JetPack】DataBinging使用
参考:https://www.jianshu.com/p/70316eb4e0f8
- 在app目录下的 build.gradle 中,添加
android { ... dataBinding { enabled = true }
}新版本统一改为:
android { ... buildFeatures {dataBinding true// for view binding:// viewBinding true}
}
- 在 xml 文件的最外层根布局,使用 … 标签(可以使用 alt + enter 的快捷键,选择 convert to data binding layout)
原本的xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
变更后的xml:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"><data></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
</layout>
- 在 xml 文件的data标签中,创建 标签,定义需要使用到的对象,如:
<layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><data><import type="java.util.List" /><import type="java.util.Map" /><!--泛型的支持会在编译时期报红线,但是是可以直接运行的但是需要通过转义字符才行,如:<号用<表示;>号用>表示;--><variablename="list"type="List<String>" /><variablename="map"type="Map<String,Object>" /><variablename="array"type="String[]" /></data><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="15dp"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{list[0]}" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{list.get(1)}" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="@{map[`key0`]}" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{map.get(`key1`)}" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="@{array[0]}" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{array[1]}" /></LinearLayout>
</layout>
- 在Activity中初始化数据,设置这些变量
public class BasicActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityBasicBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_basic);List<String> list = new ArrayList<>();list.add("list1");list.add("list2");binding.setList(list);HashMap<String, Object> map = new HashMap<>();map.put("key0", "map_value0");map.put("key1", "map_value1");binding.setMap(map);String[] arrays = {"字符串1", "字符串2"};binding.setArray(arrays);}
}
DataBinding在RecyclerView Adapter中的使用
https://my.oschina.net/u/4356937/blog/3792207
https://www.jianshu.com/p/4d30efa6b500
https://cloud.tencent.com/developer/article/1200774
【Android JetPack】DataBinging使用相关推荐
- Android Jetpack架构组件之 Room(使用、源码篇)
2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...
- Android Jetpack组件之Hilt使用
前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. And ...
- Android Jetpack组件App Startup简析
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android Jetpack组件之WorkManger使用介绍
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android Jetpack组件之Navigation使用-源码
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android Jetpack组件之 Room使用-源码
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android Jetpack组件之 Paging使用-源码
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android Jetpack组件之 LiveData使用-源码
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android Jetpack组件之ViewModel使用
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- Android Jetpack 组件之 Lifecycle源码
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
最新文章
- iMeta:西农韦革宏团队焦硕等-土壤真菌驱动细菌群落的构建(全文翻译/PPT/视频解读)...
- ubuntu18.04搭建SLAM环境 转 高翔 十四讲匹配环境
- 工作中搜索页面搜索记录功能的封装(存储到本地)
- CyberLink ColorDirector Ultra(视频调色工具)中文版
- Zabbix 安装部署
- react组件放在数组中_为什么要在函数组件中使用React.memo?
- PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法
- java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()的问题解决
- 外部工具连接SaaS模式云数仓MaxCompute 实战—— 数据库管理工具篇
- Visual Studio 2017 已知问题 Qamp;amp;A
- uva 1312——Cricket Field
- M1 Mac 档案的临时暂存区工具: Yoink
- Ubuntu18.04 orb-slam3编译出现的错误 undefined reference to symbol ‘_ZN3MPI8Datatype4FreeEv‘ libmpi_cxx.so
- matlab做神经网络的步骤,matlab建立神经网络模型
- hist 和imhist的区别
- 成功绩效评估面谈的八个步骤
- PS——证件照换底色的极简方法
- idea怎么进行c语言编程_idea编写c语言
- 基于Hadoop豆瓣电影数据分析(综合实验)
- linux 打开相机工具cheese/guvcview