Data Binding 上

作者: crossroads | 来源:发表于2019-07-26 15:47 被阅读1次

一、前言

最近使用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中进行点击、双向绑定等内容

相关文章

网友评论

    本文标题:Data Binding 上

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