一、前言
最近使用Data Binding进行的APP开发,便写一个文档,方便大家零基础着手开发。因为项目中用的viewmodel+databinding,这里也只有这一种模式哦O(∩_∩)O~
二、配置
在app 下的build.gradle中添加
android {
...
dataBinding {
enabled = true
}
}
三、第一个布局(简单的展示)
1. 写一个支持binding的页面(不要忘记layout哦)
data中的数据(可以是类、string等)用来在页面显示,且可以通过binding赋值。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="name"
type="String" />
<variable
name="viewModel"
type="com.package.XXViewModel"
/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="@{name}"
/>
</RelativeLayout>
</layout>
2. 在Activity或fragment中使用
make project之后,会自动根据xml名称生成一个binding文件,这里是ActivityMainBinding。
MainActivity.java
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
val binding: ActivityMainBinding = DataBindingUtil.setContentView(
this, R.layout.activity_main)
// 或者使用
// val binding: ActivityMainBinding = ActivityMainBinding.inflate(getLayoutInflater())
//给布局赋值
binding.name = "name"
binding.viewModel = viewModel
//获取布局的子view,例如id为title_tv的view
binding.titleTv
}
四、在fragment、adapter中获得binding
val listItemBinding = ListItemBinding.inflate<XXBinding>(layoutInflater, viewGroup, false)
// or
val listItemBinding = DataBindingUtil.inflate<XXBinding>(layoutInflater, R.layout.list_item, viewGroup, false)
后记
这里贴一下官网链接把,点击这里进入官网,
下一节将讲述在layout中进行点击、双向绑定等内容
网友评论