美文网首页
JetPack-DataBinding 简单使用

JetPack-DataBinding 简单使用

作者: NullPoint3Exce | 来源:发表于2020-10-22 23:21 被阅读0次

1.开启

  dataBinding{
        enabled=true
  }

2.布局和Bean

创建普通布局后,鼠标选中根布局,alt+enter 提示,convert to DataBinding模式,就会如下结构:
data 主要负责描述bean对象。下面是布局结构对象
import导入bean对象的路径
varable 变量标签
name 变量名字
type 变量类型
都很简单,好理解。

<?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  >
        <import type="com.example.testjetpack.User"/>
        <import type="com.example.testjetpack.ObserveUser"/>
        <variable
            name="user"
            type="User" />
        <variable
            name="user"
            type="ObserveUser" />
    </data>
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:textSize="33sp"
            android:layout_height="wrap_content"
            android:text="@{user.name,default=www}"
            tools:ignore="MissingConstraints" />
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@={user.name}"
            />
    </LinearLayout>
</layout>

3.代码-主界面

代码如何这种结构的xml结构进行关联

布局文件转换为DataBinding的模式后,都会产生一个DataBinding类。规则是布局名称+DataBinding,如activity_main 就会产生ActivityMainBinding.忽略特殊字符。

//  第一种方式
  ActivityMainBinding binding = DataBindingUtil.setContentView(this,
                R.layout.activity_main);

//第二种方式
 ActivityMainBinding inflate = ActivityMainBinding.inflate(getLayoutInflater());

4.单向数据变化更新UI

4.1 实体类继承

改变数据后,调用 notifyChange(); 更新所有字段
notifyPropertyChanged(BR._all); 更新单个字段。

public class User extends BaseObservable {
    private String id;
    private String name;
...set方法
...get方法
   public void setName(String name) {
        this.name = name;
        notifyChange(); //更新所有字段
        notifyPropertyChanged(BR._all);
    }

5.双向绑定

就是数据变化可以通知UI,UI的变化也会更新数据。
最重要的是 android:text="@={user.name}" 多了=符号。

  <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@={user.name}"
            />

相关文章

  • JetPack-DataBinding 简单使用

    1.开启 2.布局和Bean 创建普通布局后,鼠标选中根布局,alt+enter 提示,convert to Da...

  • Jetpack-DataBinding

    DataBinding DataBinding是一个支持库,顾名思义:数据绑定,它可以将布局页面中的组件与应用中的...

  • Jetpack-DataBinding

    DataBinding概述 DataBinding主要是将数据与UI控件的绑定,你无需手动调用视图来 set 新状...

  • 01 Jetpack-DataBinding

    一、DataBinding简介 在传统的Android应用开发中,布局文件通常只负责应用界面的布局工作,如果需要实...

  • Jetpack-DataBinding初体验

    上一次中的代码: 利用DataBinding改善 首先再build.gradle中开启dadabinding 然后...

  • jetpack-DataBinding onClick 的几种点

    DataBinding onClick 的几种点击方式 1.@{click} 2.不带参数:@{() -> vie...

  • 简单使用

    创建模型 过滤器 我们有一些字段和我们想让用户筛选的基础上 名称、价格或release_date。 我们创建一个 ...

  • gorange

    数组中简单使用 map中简单使用

  • 简单使用使用kaggle

    向我这样的条件不好的可以考虑借助云gpu来加速训练,借助kaggle可以在kaggle服务器上训练数据,kaggl...

  • 零碎的小程序笔记

    目录 template的简单使用WXS的简单使用npm的简单使用倒计时js的实现wx:for的使用一些js方法记录...

网友评论

      本文标题:JetPack-DataBinding 简单使用

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