ViewBinding

纯代替FindById的插件,不能找到<Include>里面的布局控件.

DataBinding

要在布局添加 <layout>和<data> 。

快捷方式,在<RelativeLayout> ait+回车,选择addLayout即可

<layout xmlns:android="http://schemas.android.com/apk/res/android"><data></data><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><includeandroid:id="@+id/included"layout="@layout/rv_recycle_item"/><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rv"android:layout_width="match_parent"android:layout_height="wrap_content" /></RelativeLayout></layout>

可以绑定数据,数据更新也使用 ObservableField

class Book {var bookName = ObservableField<String>()var price = ObservableDouble()var rating=ObservableInt()
}

还有一种方法刷新:需要Data继承 BaseObservable

    @get:Bindablevar name: String? = nullset(name) {field = name// 通知 ViewDataBinding,name 成员变化了notifyPropertyChanged(BR.Book)}

添加回调监听,要注意的是回调参数

interface EventListener {fun onClick1(view:View)fun onClick2(string: String)}

下面是布局代码

<?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><variablename="Book"type="com.example.uidemo.model.Book" /><variablename="event"type="com.example.uidemo.EventListener" /><import type="com.example.uidemo.model.BookRatingUtil"/></data><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/book_name_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{Book.bookName}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/btn"android:text="点击修改文字"android:onClick="@{event.onClick1}"app:layout_constraintTop_toBottomOf="@id/book_name_tv"android:layout_width="match_parent"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/book_detail_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{BookRatingUtil.getContent(Book)}"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@id/btn"/><Buttonandroid:id="@+id/intent_btn"
//回调参数!!!!android:onClick="@{()->event.onClick2(Book.bookName)}"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>
</layout>

复杂操作,比如要加载网络图片,需要拼接文字

"nameSpace:imageFromUrl"为自定义方法名,与布局文件呼应。

    companion object {@BindingAdapter("nameSpace:imageFromUrl")@JvmStaticfun bindImageFromUrl(view: ImageView, imageUrl: String?) {if (!TextUtils.isEmpty(imageUrl)) {Glide.with(view).load(imageUrl).transition(DrawableTransitionOptions.withCrossFade()).into(view)}}}
<ImageViewandroid:layout_width="50dp"nameSpace:imageFromUrl="@{model.imageUrl}"android:layout_height="50dp"android:contentDescription="@string/todo" />

使用用法,有其他更相信的文章,本文章仅作自己学习和笔记

Android ViewBinding和DataBinding的区别相关推荐

  1. ViewBinding和DataBinding的区别

    ViewBinding和DataBinding均会生成可用于直接引用视图的绑定类.不过,这两者之间存在明显差异: 1.DataBinding仅处理使用 代码创建的数据绑定布局. 2.ViewBindi ...

  2. Android ViewBinding和DataBinding的几个使用方式 - 上

    往期文章分享 点击跳转=><导航贴>- Unity手册,系统实战学习 点击跳转=><导航贴>- Android手册,重温移动开发 本文约10千字,新手阅读需要14分 ...

  3. ViewBinding和DataBinding的理解和区别

    之前一直把ViewBinding当成了DataBinding,直到最近的学习中才发现他们不是一个东西.于是写下这篇笔记帮助理解和区分他们俩. 一.ViewBinding 1.什么是ViewBindin ...

  4. Android ViewBinding使用及原理

    Android ViewBinding使用及原理 一.定义 ViewBinding主要是Google用来findViewById的,作用跟Butterknife差不多.只不过Butterknife是通 ...

  5. Android版本dp,Android中sp和dp区别

    --- title: Android中sp和dp区别 date: 2016-09-08 17:04:15 tags: Android categories: Android开发 --- ## 理解an ...

  6. Android数据绑定框架DataBinding用法

    Android数据绑定框架DataBinding用法     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/5195374 ...

  7. android中src和background区别

    android中src和background区别 ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放 ...

  8. Android各个版本API的区别

    Android各个版本API的区别 Android 1.5 API变更概要: 1.UI framework · Framework for easier background/UI thread in ...

  9. 浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

    浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解 本篇文章小编为大家介绍,Android onTouchEvent 与 onInterceptTo ...

最新文章

  1. 设计一个成功的微服务,堪称必备的9个基础知识
  2. 删除word菜单栏上的adobe comments的终极办法
  3. [architecture]-spin_unlock中是怎样让cpu退出standby模式的?
  4. 数据结构之归并排序图文详解及代码(C++实现)
  5. 兼顾pc和移动端的textarea字数监控的实现方法
  6. CSS基本布局16例(原网页引自Owen Briggs)
  7. 学术杂谈|一篇所有研究生都该读的好文:阳光温热 科研静好!
  8. 安卓手机怎么投屏台式计算机,怎么将手机投屏到台式电脑上
  9. ceph peering流程分析
  10. 手把手实现AI诗歌生成(AI写诗)
  11. mac接收gmail邮件_如何从您的Gmail帐户发送和接收Hotmail
  12. 知犀思维导图,在线免费创作思维导图
  13. minio 分片上传
  14. 数理统计笔记2:总体均值的抽样分布
  15. 小程序的发布上线流程
  16. 男人要知道的40条忠告
  17. 洛谷 P1718 图形复原
  18. Mathematica 和 MATLAB、Maple 并称为三大数学软件
  19. jupyter notebook如何导入使用pygal模块
  20. 2021-11-01天视通常见故障汇总

热门文章

  1. 网站访问量和服务器带宽的关系
  2. mysql中week()函数的用法
  3. 寄存器和存储器的区别?
  4. 贴片绕线电感和贴片电感的区别
  5. EPLAN P8部件库 EPLAN P8部件库,包含低压电气 控制系统设计常用品牌型号,全部部件均为本人整理自己创建,可大大提高电气控制行业同仁的工作效率!
  6. 零基础学日语资料附经验分享
  7. Frame Interpolation
  8. 政采法规 | 中小企业划型标准规定
  9. 付子玉:丁香园医疗领域图谱的构建与应用
  10. 用Lua语言编写Wireshark dissector插件