DataBinding的作用是直接让实体类的和布局中控件绑定,不需要代码中设置,只需给布局设置对象即可。

  1. DataBinding支持
android {    compileSdkVersion 28    defaultConfig {        applicationId "com.example.study"        minSdkVersion 22        targetSdkVersion 28        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }    }    //需要添加DataBinding支持    dataBinding {        enabled = true    }}

使用之前需要添加DataBinding支持。Kotlin项目需要另外的配置。目前Demo项目是Java项目,不过是Java和Kotlin混合使用。

  1. 新建一个实体类
    Book,书名、作者名两个属性,一个构造方法。
class Book {    var name: String    var author: String    constructor(name: String, author: String) {        this.name = name        this.author = author    }}
  1. 布局样式
<layout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    tools:context=".activity.jetpack.DataBandingActivity">    <data>        <variable            name="Book"            type="com.example.study.jetpack.model.Book" />    data>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <Button            android:id="@+id/bt"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="获取数据"            />        <TextView            android:id="@+id/tv_name"            android:layout_width="wrap_content"            android:text='@{Book.name}'            android:layout_height="wrap_content" />        <TextView            android:id="@+id/tv_author"            android:layout_width="wrap_content"            android:text='@{Book.author}'            android:layout_height="wrap_content" />    LinearLayout>layout>

和以往不同,根布局是layout标签。variable标签中指定实体类和名称,如果实体类名称有重复的情况,可以指定别名。

  1. Activity中使用
class DataBindingActivity : BaseActivity(), View.OnClickListener {    companion object {        fun start(context: Context) {            val intent = Intent(context, DataBindingActivity::class.java)            context.startActivity(intent)        }    }    //实体类对象    lateinit var book: Book    //布局构建的dataBanding对象    lateinit var dataBinding: ActivityDataBandingBinding    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        dataBinding= DataBindingUtil.setContentView(this, R.layout.activity_data_banding)        book = Book("呐喊", "鲁迅")        //设置对象        dataBinding.book = book        bt.setOnClickListener(this)    }    override fun onClick(v: View?) {        //点击重新赋值对象        dataBinding.book = Book("射雕英雄传", "金庸")    }}

布局建好之后,build一下就会生成一个ActivityDataBindingBinding文件,需要的就是实例化它并设置具体的数据。

和之前的使用也是很像的。注意布局和实例化DataBinding对象即可。
还有很多其它的功能,比如设置数据的时候怎么拼接字符串之类。
感觉也有些不好的地方,布局,实体类,获取数据的部分,看代码逻辑的话需要三部分来回切换了。

更多相关文章

  1. 类和 Json对象
  2. Android里把Dialog设置为全屏的方法
  3. 2011.09.26(5)——— android sample之Notepad(TitleEditor)
  4. android之HttpURLConnection
  5. 【Android代码片段之四】设置全屏
  6. [转]android 一直在最前面的浮动窗口效果
  7. Android继承AppCompatActivity设置全屏无标题
  8. android中自己画一个按钮,和自己设置一个框框
  9. Android中Bitmap对象和字节流之间的相互转换

随机推荐

  1. 让DNS运行在容器中
  2. TCPIP卷一(8):EIGRP的组建和邻居状态机
  3. c语言自学打卡
  4. 故障复盘
  5. 成长的时候为什么会迷茫
  6. 你的个人信息,只值5毛!
  7. 微信授权扫码点餐-新特性React16
  8. 如果你没用过Excel快速填充,你绝对不知道
  9. Excel提取中文,数字和字母,一分钟搞定!
  10. 6:VMware Horizon View 8.0-安装数据库服务