Android DataBinding手把手入门教程

1、在build.gradle(Module)里引入依赖,然后重构(sync Now):

android {
    ......

    dataBinding{
        enabled true
    }
}

2、找到想要改为dataBinding视图的页面,alt+enter弹出如下:

并选择Convert to data binding layout自动转换。

转换之后效果应和下图类似:

可以看到页面出现了新的Layout和data的空标签。(data 就是用来存放数据的)

3、接下来到对应的Activity里,声明全局变量为视图去掉下划线改大写+binding:

如视图为activity_main,则对应声明的databinding类型变量就是ActivityMainBinding类型,如下:

此时在Oncreate()里输入如下代码:

//binding的对象实例化,第二个参数为对应的视图id
//binding=DataBindingUtil.setContentView(this,视图id);
binding= DataBindingUtil.setContentView(this,R.layout.activity_data_banding_test);

//你的ViewModel实例化,ViewModel部分就不再详细讲了,也可以用其他类型数据
viewModelWithDataBanding=new ViewModelProvider(this,new ViewModelProvider.NewInstanceFactory()).get(ViewModelWithDataBanding.class);

//将你准备好的数据,可以是ViewModel,通过binding.setData();绑定到视图
binding.setData(viewModelWithDataBanding);
//设置绑定的生命周期,这句很必要!!!
binding.setLifecycleOwner(this);

4、再次返回你的视图,绑定你的数据如下:

<?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>
        <variable
            name="data"
            type="com.example.mytests.viewModels.ViewModelWithDataBanding"
            />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".activities.DataBandingTest">

        <TextView
            android:id="@+id/textView2_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{String.valueOf(data.number)}"
            android:textSize="30sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.257" />

        <Button
            android:id="@+id/button2_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            android:onClick="@{()->data.add()}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2_1" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

首先,声明变量<variable name="你自定义变量名,data" type="你之前.setData()的数据的数据类型"/>

然后,绑定变量如:

android:text="@{你自定义变量名.变量下的数据}";

绑定方法是注意:如:

android:onClick="@{()->data.add()}",需在方法前添加()->表示这是方法。

5、在视图对应的activity中可通过你声明的绑定对象来访问对应的视图控件,如:

需要设置id为button12的点击事件,可直接用绑定对象.button12.setOnclickListener(this);来操作,减少了代码的重复性,简洁美观。

操作控件案例截图:

以上为DataBinding的简单使用教程,希望大家支持!

到此这篇关于Android DataBinding手把手入门教程的文章就介绍到这了,更多相关Android DataBinding内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android DataBinding的官方双向绑定示例

    在Android Studio 2.1 Preview 3之后,官方开始支持双向绑定了. 可惜目前Google并没有在Data Binding指南里面加入这个教程,并且在整个互联网之中只有这篇文章介绍了如何使用反向绑定. 在阅读一下文章之前,我假设你已经知道如何正向绑定. 回顾一下Data Binding 在正向绑定中,我们在Layout里面的绑定表达式是这样的: <layout ...> <data> <variable type="com.example.mya

  • Android 属性动画原理与DataBinding

    Android 属性动画原理与DataBinding 看到这个标题的时候你可能会有疑问,属性动画和 DataBinding 之间有什么关系?我个人理解的是:它们内部的实现思想有相似之处.这篇文章主要对 Android 属性动画的知识通过文字进行整理记录,内容参考于<Android开发艺术探索>,在最后会给出我如此理解属性动画和 DataBinding 的原因. Android动画概述: Android 的动画可以分为三种:View 动画.帧动画和属性动画,View 动画通过对场景里的对象不断做

  • 在Android中如何使用DataBinding详解(Kotlin)

    前言 本问主要介绍DataBinding在Android App中的使用方法.数据绑定是将"提供器"的数据源与"消费者"绑定并使其同步的一种通用技术. 1. Android应用程序使用数据绑定 1.1 介绍DataBinding Android通过DataBinding提供了编写声明型布局的支持.这样可以最大程度简化布局和逻辑相关联的代码. 数据绑定要求修改文件,外层需要包裹一个layout布局.主要通过@{} 或 @={}语法把布局中的元素和表达式的引用写入到属性

  • Android dataBinding与ListView及事件详解

    今天来了解一下Android最新给我们带来的数据绑定框架--Data Binding Library.数据绑定框架给我们带来了更大的方便性,以前我们可能需要在Activity里写很多的findViewById,烦人的代码也增加了我们代码的耦合性,现在我们马上就可以抛弃那么多的findViewById.说到这里,有人可能会有个疑问:我使用一些注解框架也可以不用findViewById啊,是的,但是注解注定要拖慢我们代码的速度,Data Binding则不会,官网文档说还会提高解析XML的速度,最主

  • android使用DataBinding来设置空状态

    写在前面 在平时的开发之中,我们需要对于数据加载的情况进行展示: 空数据 网络异常 加载中等等情况 现在设置页面状态的方式有多种,由于笔者近期一直在使用databinding,而数据绑定通过改变模型来展示view的方式和状态页的设置也满契合的. 所以这里就讲讲使用databinding来设置android中的各种状态页.很简单,先看看效果 首先 在app的build.gradle文件中开启databinding android{ ... dataBinding { enabled = true

  • Android DataBinding手把手入门教程

    1.在build.gradle(Module)里引入依赖,然后重构(sync Now): android { ...... dataBinding{ enabled true } } 2.找到想要改为dataBinding视图的页面,alt+enter弹出如下: 并选择Convert to data binding layout自动转换. 转换之后效果应和下图类似: 可以看到页面出现了新的Layout和data的空标签.(data 就是用来存放数据的) 3.接下来到对应的Activity里,声明

  • Android Studio 新手入门教程(一)基本设置图解

    ##写在前面: 作为一个刚半只脚踏入android开发的新手,在使用eclipse开发了两个自我感觉不甚成熟的商城类app之后,遇到了一些问题,总结为如下: 1.代码复用性 .findviewById,onclick事件等,一遍遍重复这类无聊的代码简直浪费生命,这个问题推荐通过依赖注入框架ButterKnife解决,直接一键生成布局中的所有控件,包括onclick点击事件,但是诸如行布局item里的控件,以及布局中include复用的布局要如何使用框架解决,这个有待后续再看. 另一个代码重复率很

  • android studio 新手入门教程(二)项目的导入教程图解

    上篇文章介绍了AS的一些常用设置方法,当工具调教妥当后,自然就要开始项目的开发啦.从零开始新建一个项目,这个简单,不必多说,这篇博客会分享我从旧平台eclipse导入项目到AS的过程,以及遇到的一些问题并如何解决.开篇先粗略的提一些需要注意的地方. ##结构目录 和eclipse不同,在android 视图下的项目目录分为java,res和manifests. manifests目录存放清单文件,不必多说. java目录会默认生成三个文件夹,其中test为在本机执行单元测试代码的目录, andr

  • android studio 新手入门教程(三)Github( ignore忽略规则)的使用教程图解

    Android Studio 里集成了上传代码到 github 的功能,所以使用上还是很简单的,设置里添加账号并测试,之后就可以很方便地上传代码到 github 了 如果你的项目是使用Android Studio新建的,那么关于 github 基本就没什么问题了.Android Studio新建项目是自带 .ignore 文件的,也就是说默认是使用了忽略规则上传.默认忽略的是 *.iml .gradle /local.properties /.idea/workspace.xml /.idea/

  • 一看就懂的Android APP开发入门教程

    工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发,开发过程中与ios程序配合基本没什么问题,而android各种机子和rom的问题很多,这也让我产生了学习android和ios程序开发的兴趣.于是凌晨一点睡不着写了第一个android程序HelloAndroid,po出来分享给其他也想学习android开发的朋友,这么傻瓜的Android开发入门文章,有一点开发基础的应该都能看懂. 一.准备工作 主要以我自己的开发环境为例,下载安装JDK和Android SD

  • Android 基础入门教程——开发环境搭建

    现在主流的Android开发环境有: Eclipse + ADT + SDK Android Studio + SDK IntelliJ IDEA + SDK 现在国内大部分开发人员还是使用的Eclipse,而谷歌宣布不再更新ADT后,并且官网也去掉了集成Android开发环境的Eclipse下载链接,各种现象都表示开发者最后都终将过渡到Android Studio,当然这段过渡时间会很长,但如果你是刚学Android的话建议直接冲Android Studio着手:而且很多优秀的开源项目都是基于

  • Android入门教程之组件Activity的生命周期详解

    目录 返回栈 Activity 状态 1. 运行状态 2. 暂停状态 3. 停止状态 4. 销毁状态 Activity 的生存期 onCreate() onStart() onResume() onPause() onStop() onDestroy() onRestart() 完整生存期 可见生存期 前台生存期 Activity 回收处理 返回栈 Android 中的 Activity 是可以层叠的,我们每启动一个新的 Activity,就会覆盖在原有的 Activity 之上,然后点击 Ba

  • Android 超详细SplashScreen入门教程

    这次的Android系统变化当中,UI的变化无疑是巨大的.Google在Android 12中采取了一种叫作Material You的界面设计,一切以你为中心,以你的喜好为风格.相信大家一旦上手Android 12之后应该能立刻察觉到这些视觉方面的变化. 关于这个SplashScreen,今天就值得好好讲一讲了. 什么是SplashScreen SplashScreen其实通俗点讲就是指的闪屏界面.这个我们国内开发者一定不会陌生,因为绝大多数的国内App都会有闪屏界面这个功能,很多的App还会利

  • 手把手教会你使用redux的入门教程

    目录 Redux详解 Redux介绍 Redux有什么作用 如何在React中使用Redux 如何使用React-redux Redux详解 Redux介绍 Redux 是 JavaScript 应用的状态容器,提供可预测的状态管理. 在Redux中有3个原则 单一数据源 整个应用的State被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个Stroe中. State 是只读的 唯一改变State 的方法就是触发Actions,Actions是一个用于描

随机推荐