美文网首页
Android-Jetpack-DataBinding使用

Android-Jetpack-DataBinding使用

作者: 阿博聊编程 | 来源:发表于2022-04-24 10:46 被阅读0次
配图来自网络,如侵必删

在使用MVVM架构模式开发App的时候,我们肯定会使用到DataBinding组件,这个组件能让页面和布局文件更加解耦。这篇博客来分享一下DataBinding相关的知识,希望对看文章的小伙伴有所帮助。

DataBinding的优势

  • 代码更加简洁,可读性会更高。部分和UI控件有关的代码可以在布局文件当中完成。
  • 不需要使用findViewById()方法。
  • 布局文件可以完成简单的业务逻辑处理。

打开DataBinding

android{
    ...
    buildFeatures.dataBinding = true
}

使用示例

<?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">

    <data>

        <variable
            name="book"
            type="com.yb.test.bind.BookBean" />
    </data>

    <LinearLayout xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        tools:context=".bind.BindActivity">


        <TextView
            android:id="@+id/titleTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{book.title}" />

        <TextView
            android:id="@+id/authorTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="@{book.author}" />

        <TextView
            android:id="@+id/ratingTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="@{book.rating}" />

    </LinearLayout>
</layout>

XML代码解析:

  • layout标签是告诉系统我们希望对这个布局文件进行绑定,系统会帮我们生成ActivityXXXBinding类;
  • data标签是用来存放所有的布局文件所有的数据;
  • <variable>标签是定义布局变量对象的类型和名称;
  • @{}是对控件的赋值,这是一个布局表达式。
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import com.yb.test.BR
import com.yb.test.R
import com.yb.test.databinding.ActivityBindBinding

class BindActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val binding = DataBindingUtil.setContentView<ActivityBindBinding>(this,R.layout.activity_bind)
        // 设置数据到XML
        binding.setVariable(BR.book,BookBean("阿博的博客","阿博","五星好评"))
        
         binding.titleTv.text = "阿博的博客"
    }
}

Kotlin代码解析:

  • DataBindingUtil.setContentView<ActivityBindBinding>(this,R.layout.activity_bind),获取绑定的布局;
  • setVariable,设置整个数据类;
  • binding.控件名称,我们可以通过binding获取到相应的控件。

相关文章

网友评论

      本文标题:Android-Jetpack-DataBinding使用

      本文链接:https://www.haomeiwen.com/subject/kxktyrtx.html