Android ViewBinding和DataBinding的区别
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的区别相关推荐
- ViewBinding和DataBinding的区别
ViewBinding和DataBinding均会生成可用于直接引用视图的绑定类.不过,这两者之间存在明显差异: 1.DataBinding仅处理使用 代码创建的数据绑定布局. 2.ViewBindi ...
- Android ViewBinding和DataBinding的几个使用方式 - 上
往期文章分享 点击跳转=><导航贴>- Unity手册,系统实战学习 点击跳转=><导航贴>- Android手册,重温移动开发 本文约10千字,新手阅读需要14分 ...
- ViewBinding和DataBinding的理解和区别
之前一直把ViewBinding当成了DataBinding,直到最近的学习中才发现他们不是一个东西.于是写下这篇笔记帮助理解和区分他们俩. 一.ViewBinding 1.什么是ViewBindin ...
- Android ViewBinding使用及原理
Android ViewBinding使用及原理 一.定义 ViewBinding主要是Google用来findViewById的,作用跟Butterknife差不多.只不过Butterknife是通 ...
- Android版本dp,Android中sp和dp区别
--- title: Android中sp和dp区别 date: 2016-09-08 17:04:15 tags: Android categories: Android开发 --- ## 理解an ...
- Android数据绑定框架DataBinding用法
Android数据绑定框架DataBinding用法 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/5195374 ...
- android中src和background区别
android中src和background区别 ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放 ...
- Android各个版本API的区别
Android各个版本API的区别 Android 1.5 API变更概要: 1.UI framework · Framework for easier background/UI thread in ...
- 浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解
浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解 本篇文章小编为大家介绍,Android onTouchEvent 与 onInterceptTo ...
最新文章
- 设计一个成功的微服务,堪称必备的9个基础知识
- 删除word菜单栏上的adobe comments的终极办法
- [architecture]-spin_unlock中是怎样让cpu退出standby模式的?
- 数据结构之归并排序图文详解及代码(C++实现)
- 兼顾pc和移动端的textarea字数监控的实现方法
- CSS基本布局16例(原网页引自Owen Briggs)
- 学术杂谈|一篇所有研究生都该读的好文:阳光温热 科研静好!
- 安卓手机怎么投屏台式计算机,怎么将手机投屏到台式电脑上
- ceph peering流程分析
- 手把手实现AI诗歌生成(AI写诗)
- mac接收gmail邮件_如何从您的Gmail帐户发送和接收Hotmail
- 知犀思维导图,在线免费创作思维导图
- minio 分片上传
- 数理统计笔记2:总体均值的抽样分布
- 小程序的发布上线流程
- 男人要知道的40条忠告
- 洛谷 P1718 图形复原
- Mathematica 和 MATLAB、Maple 并称为三大数学软件
- jupyter notebook如何导入使用pygal模块
- 2021-11-01天视通常见故障汇总