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

在这里插入图片描述

近期将会梳理一下JetPack全家桶的使用,包括DataBinding,Room,ViewModel,LiveData,Navigation等。 本来打算先写DataBinding的使用,没想到在17年的时候已经写过了,这里就补充一点吧,毕竟不是什么新东西

目录

  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库即可。下面依赖仅供参考

img

配置工程的Gradle

android {
    …
    dataBinding {
        enabled = true
    }
}

在Activity、Fragment中使用

使Activity支持DataBinding,在布局的最外层加入””标签即可,直接加在最外层,不会影响已有的代码。

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}"
    />

结束!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Jetpack是一组用于Android应用程序开发的库集合,旨在帮助开发者简化开发流程、提高生产力和应用性能。它提供了一些常用的组件和工具,可以帮助开发者解决常见的开发问题。 要使用Android Jetpack,您需要在您的项目中添加相关的Jetpack库依赖。您可以通过在项目的build.gradle文件中添加相应的依赖来实现。例如,要使用Navigation组件,您可以添加以下依赖: implementation "androidx.navigation:navigation-fragment-ktx:2.3.5" implementation "androidx.navigation:navigation-ui-ktx:2.3.5" 一旦您添加了所需的依赖,您可以开始使用Jetpack组件了。对于Navigation组件,您可以使用Navigation图形化界面来创建和管理应用程序中的导航结构,并使用NavController来处理导航操作。 另外,为了更好地理解和学习Android Jetpack,您可以借助官方文档和示例代码来深入学习。官方文档提供了详细的介绍和用法示例,而示例代码可以帮助您更好地理解如何在实际项目中应用Jetpack组件。 总结起来,要使用Android Jetpack,您需要添加相关的库依赖,并根据具体的组件使用文档进行配置和使用。通过深入学习官方文档和示例代码,您可以更好地理解和掌握Jetpack的使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Android Jetpack架构开发,从入门到实战,看这一篇就够了](https://blog.csdn.net/Eqiqi/article/details/127534594)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Android JetPack学习](https://blog.csdn.net/weixin_39069034/article/details/100170739)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值