近期将会梳理一下JetPack全家桶的使用,包括DataBinding,Room,ViewModel,LiveData,Navigation等。

本来打算先写DataBinding的使用,没想到在17年的时候已经写过了,这里就补充一点吧,毕竟不是什么新东西

  1. Android数据绑定技术一,企业级开发

  2. Android数据绑定技术二,企业级开发

  3. Android  JetPack~ DataBinding(数据绑定)(一)    集成与使用

  4. Android  JetPack~ LiveData (一)   介绍与使用

目录

  1. 介绍
  2. 集成到环境
  3. 在Activity、Fragment中使用
  4. BindingAdapter的使用

介绍

DataBinding(数据绑定)发布于2015年的Google I/O大会,旨在减少Android开发中的大量模板代码,增加代码及逻辑清晰度,提高开发效率和维护效率。

它的好处显而易见

  • 不用再findViewById(),我们直接可以在xml文件进行属性赋值
  • xml中可完成简单的逻辑,如@{ xx==null? a ? b}
  • View与逻辑代码解耦性更高,数据与View双向绑定,只需关注数据变化即可
  • .....

集成到环境

很早的时候是需要加入依赖的,不过现在只需要更新SDK,下载最新的Android Support库即可。下面依赖仅供参考

配置工程的Gradle

android {

dataBinding {
enabled = true
}
}

在Activity、Fragment中使用

使Activity支持DataBinding,在布局的最外层加入”<layout>”标签即可,直接加在最外层,不会影响已有的代码。
acty_jpack_layout.xml这个文件名随便起,但是后面会用到(系统会帮我生成ActyJpackLayoutBinding)
<?xml version="1.0" encoding="utf-8"?>
<layout>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="ceshi"/> </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

在Activity的onCreate方法中

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//通过databinding 把activity和view绑定
ActyJpackLayoutBinding mBinding = DataBindingUtil.setContentView(this,R.layout.acty_jpack_layout);
}

在Fragment中onCreateView方法中

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBinding = ActyJpackLayoutBinding.inflate(inflater);
return mBinding.getRoot();
}

哦,对了,系统还提供其他的用法比如说,在ViewHolder中

class MyHolder extends RecyclerView.ViewHolder {
MyBinding binding;
MyHolder(View view) {
super(view);
binding = DataBindingUtil.bind(view);
}
}

要获取View的子View可以通过DataBindingUtil.getBinding(sunView);

BindingAdapter的使用

这个方法很好用,使用场景也很广,比如说业务需要页面中按钮需要点击后缩放,抬起后还原。也可以加载图片时用Glide框架去加载,而我们只需要在xml文件中加一行代码就OK了。好处就是复用性极高,如果要优化图片质量,只需要在ImageBindAdapter中修改,用到的地方自然就成修改后的。

public class ImageBindingAdapter {
@BindingAdapter("imageUrl")
public static void imageUrl(ImageView view, String imageUrl){
RequestOptions options =
new RequestOptions()
.centerCrop()
.dontAnimate();
Glide.with(view)
.load(imageUrl)
.apply(options)
.into(view);
} }

直接在xml文件中使用

<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
app:imageUrl="@{bean.img}"
/>

结束!!!

这篇写的很少,主要是之前写过了,有需要可以结合之前两篇。

下篇Android  JetPack ~LiveData (一)   介绍与使用

Android JetPack~ DataBinding(数据绑定)(一) 集成与使用的更多相关文章

  1. 【Android Jetpack高手日志】DataBinding 从入门到精通

    前言 DataBinding 数据绑定库是 Android Jetpack 的一部分,借助该库可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源.我个人觉得,使用 DataBin ...

  2. 带你了解Android Jetpack

    1.Jetpack主要特性有以下三点: 1.加速开发组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率. 2.消除样板代码Android Jetpack可管理繁琐的Activi ...

  3. Android Jetpack组件

    带你领略Android Jetpack组件的魅力 Android新框架jetpack的内容讲解:Room.WorkManager.LifeCycles.LiveData.ViewModel.DataB ...

  4. 乘风破浪,遇见Android Jetpack之Compose声明式UI开发工具包,逐渐大一统的原生UI绘制体系

    什么是Android Jetpack https://developer.android.com/jetpack Android Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法.减少 ...

  5. 中国移动MM Android/OPhone付费SDK--MMBillingSDK,集成问题总结

    原地址:http://www.j2megame.com/html/xwzx/ty/2916.html 中国移动MM Android/OPhone付费SDK--MMBillingSDK,集成问题总结 近 ...

  6. Android Jetpack之AppCompat(一)

    今天我们来聊一聊有关AppCompat,作为Android Jetpack系列文章的开篇.说到Android Jetpack,我们先看一下这张图: 从图中我们可以看到,整个Android Jetpac ...

  7. Android Jetpack 组建介绍(二)——Lifecycler

    参考Android Jetpack架构组件之 Lifecycle(源码篇) 源码分析 关于Lifecycle的使用考上一篇文章Android Jetpack框架之 Lifecycles(使用篇),从使 ...

  8. Android Jetpack 组建介绍(一)——Lifecycler

    转自带你领略Android Jetpack组件的魅力 Android Jetpack 对于任何一个产品来说,我们开发中都会面对哪些问题?如:产品交互.用户体验.代码结构.数据获取.数据存储.网络优化. ...

  9. Android Jetpack 概述

    Android Jetpack Overview Android Jetpack Jetpack is a set of libraries, tools and architectural guid ...

  10. Android Jetpack - 使用 Navigation 管理页面跳转

    在今年的 IO 大会上,发布了一套叫 Android Jetpack 的程序库.Android Jetpack 里的组件大部分我们都接触过了,其中也有一些全新的组件,其中一个就是 Navigation ...

随机推荐

  1. Hashcat使用指南

    Hashcat使用指南 免责声明: 0×01 Hashcat破解linux shadow的密码-首先了解shadow文件到底是什么? 0×02 hashcat的使用 参数补充: -m 参数 -a 参数 ...

  2. Webpack前端源码泄露漏洞

    什么是Webpack? webpack是一个打包器(bundler),它能将多个js.css.json等文件打包成一个文件.这样可以使复杂的各种加载文件集合为整合为单一的集合,让代码更加模块化便于编程 ...

  3. 同一服务器部署多tomcat以及MyEclipse添加多tomcat

    tomcat有很多版本但他们的部署方式并不因为版本的不同而改变其的部署方式,操作者不必考虑此等原因.本人办公电脑使用的是tomcat7,家里自用的是6版本,这里就以6版本为例实现同一台机器上部署多to ...

  4. mysql-DuplicateUpdate和java的threadpool的"死锁"

    大家千万不要被文章的标题给迷惑了,他两在本篇文章是没有关系的, 今天给大家讲讲最近2个有意思的issue,分享一下我学到的 mysql DuplicateUpdate的用法要注意的点 java的thr ...

  5. Python怎么引入不同的库?

    怎么引入不同的库? 在线安装库 1)pip install 模块名 2)国内源: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirr ...

  6. SQLMap入门——获取数据库用户的密码

    列出数据库用户的密码 如果当前用户有读取包含用户密码的权限,SQLMap会先列举出用户,然后列出Hash,并尝试破解 python sqlmap.py -u http://localhost/sqli ...

  7. 从一道CTF题学习python字节码到源码逆向

    概述: 该题来源为2022爱春秋冬季赛ezpython,难度不是很大刚好适合我这样的萌新入门 题目: 3 0 LOAD_CONST 1 (204) 3 LOAD_CONST 2 (141) 6 LOA ...

  8. 2021强网杯青少赛(qwtac)楼上大佬ddw WriteUp

    楼上大佬ddw战队WRITEUP 战队信息 战队名称:楼上大佬ddw 战队排名:24 解题情况 解题过程 01 签到 操作内容: 下载附件,打开运行拿到flag 如该题使用自己编写的脚本代码请详细写出 ...

  9. [UOJ96] 【集训队互测2015】胡策的小树

    先考虑不掺金坷垃的做法. 设猴子处于 \(i\) 节点的概率为 \(f_i\),列出方程如下(\(i\) 的祖先包括自身): \[f_i = \sum_{j为i祖先}\frac{1-p_j}{siz_ ...

  10. 买不到的数目【第四届蓝桥杯省赛C++A组,第四届蓝桥杯省赛JAVAC组】

    买不到的数目 小明开了一家糖果店. 他别出心裁:把水果糖包成4颗一包和7颗一包的两种. 糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合. 当然有些糖果数目是无法组合出来的,比如要买 10 ...