返回顶部
首页 > 资讯 > 精选 >ViewBinding怎么使用
  • 904
分享到

ViewBinding怎么使用

2023-07-05 14:07:28 904人浏览 独家记忆
摘要

本文小编为大家详细介绍“ViewBinding怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“ViewBinding怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。视图绑定通过视图绑定功能,您可以更

本文小编为大家详细介绍“ViewBinding怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“ViewBinding怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    视图绑定

    通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
    在大多数情况下,视图绑定会替代 findViewById

    设置说明

    注意:视图绑定在 Android Studio 3.6 Canary 11 及更高版本中可用。

    视图绑定功能可按模块启用。要在某个模块中启用视图绑定,请将 viewBinding 元素添加到其 build.gradle 文件中,如下例所示:

    android {    ...    viewBinding {        enabled = true    }}

    然而,在后续的as版本中这个引用又变了,不然build可能报错,需要如下引用才行:

    android {buildFeatures{viewBinding true}}

    如果您希望在生成绑定类时忽略某个布局文件,请将 tools:viewBindingIgnore=“true” 属性添加到相应布局文件的根视图中:

    <LinearLayout        ...        tools:viewBindingIgnore="true" >    ...</LinearLayout>

    用法

    为某个模块启用视图绑定功能后,系统会为该模块中包含的每个 XML 布局文件生成一个绑定类。每个绑定类均包含对根视图以及具有 ID 的所有视图的引用。系统会通过以下方式生成绑定类的名称:将 XML 文件的名称转换为驼峰式大小写,并在末尾添加“Binding”一词。

    例如,假设某个布局文件的名称为 result_profile.xml

    <LinearLayout ... >        <TextView android:id="@+id/name" />        <ImageView android:cropToPadding="true" />        <Button android:id="@+id/button"            android:background="@drawable/rounded_button" />    </LinearLayout>

    所生成的绑定类的名称就为 ResultProfileBinding。此类具有两个字段:一个是名为 nameTextView,另一个是名为 buttonButton。该布局中的 ImageView 没有 ID,因此绑定类中不存在对它的引用。

    每个绑定类还包含一个 getRoot() 方法,用于为相应布局文件的根视图提供直接引用。在此示例中,ResultProfileBinding 类中的 getRoot() 方法会返回 LinearLayout 根视图。

    以下几个部分介绍了生成的绑定类在 Activity 和 Fragment 中的使用。

    在 Activity 中使用视图绑定

    如需设置绑定类的实例以供 Activity 使用,请在 Activity 的 onCreate() 方法中执行以下步骤:

    • 调用生成的绑定类中包含的静态 inflate() 方法。此操作会创建该绑定类的实例以供 Activity 使用。

    • 通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。

    • 将根视图传递到 setContentView(),使其成为屏幕上的活动视图。

       private lateinit var binding: ResultProfileBinding   override fun onCreate(savedInstanceState: Bundle) {       super.onCreate(savedInstanceState)       binding = ResultProfileBinding.inflate(layoutInflater)       val view = binding.root       setContentView(view)   }

    您现在即可使用该绑定类的实例来引用任何视图:

        binding.name.text = viewModel.name    binding.button.setOnClickListener { viewModel.userClicked() }

    在 Fragment 中使用视图绑定

    如需设置绑定类的实例以供 Fragment 使用,请在 Fragment 的 onCreateView() 方法中执行以下步骤:

    • 调用生成的绑定类中包含的静态 inflate() 方法。此操作会创建该绑定类的实例以供 Fragment 使用。

    • 通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。

    • 从 onCreateView() 方法返回根视图,使其成为屏幕上的活动视图。

    注意:inflate() 方法会要求您传入布局膨胀器。如果布局已膨胀,您可以调用绑定类的静态 bind() 方法。如需了解详情,请查看视图绑定 GitHub 示例中的例子。

        private var _binding: ResultProfileBinding? = null    // This property is only valid between onCreateView and    // onDestroyView.    private val binding get() = _binding!!    override fun onCreateView(        inflater: LayoutInflater,        container: ViewGroup?,        savedInstanceState: Bundle?    ): View? {        _binding = ResultProfileBinding.inflate(inflater, container, false)        val view = binding.root        return view    }    override fun onDestroyView() {        super.onDestroyView()        _binding = null    }

    您现在即可使用该绑定类的实例来引用任何视图:

        binding.name.text = viewModel.name    binding.button.setOnClickListener { viewModel.userClicked() }

    注意:Fragment 的存在时间比其视图长。请务必在 Fragment 的 onDestroyView() 方法中清除对绑定类实例的所有引用。

    gitHub示例如下代码所示:

    class BindFragment : Fragment(R.layout.fragment_blank) {    // Scoped to the lifecycle of the fragment's view (between onCreateView and onDestroyView)    private var fragmentBlankBinding: FragmentBlankBinding? = null    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {        super.onViewCreated(view, savedInstanceState)        val binding = FragmentBlankBinding.bind(view)        fragmentBlankBinding = binding        binding.textViewFragment.text = getString(string.hello_from_vb_bindfragment)    }    override fun onDestroyView() {        // Consider not storing the binding instance in a field, if not needed.        fragmentBlankBinding = null        super.onDestroyView()    }}

    与 findViewById 的区别

    与使用 findViewById 相比,视图绑定具有一些很显著的优点:

    • Null 安全:由于视图绑定会创建对视图的直接引用,因此不存在因视图 ID 无效而引发 Null 指针异常的风险。此外,如果视图仅出现在布局的某些配置中,则绑定类中包含其引用的字段会使用 @Nullable 标记。

    • 类型安全:每个绑定类中的字段均具有与它们在 XML 文件中引用的视图相匹配的类型。这意味着不存在发生类转换异常的风险。

    这些差异意味着布局和代码之间的不兼容将会导致构建在编译时(而非运行时)失败。

    与数据绑定的对比

    视图绑定和数据绑定均会生成可用于直接引用视图的绑定类。但是,视图绑定旨在处理更简单的用例,与数据绑定相比,具有以下优势:

    • 更快的编译速度:视图绑定不需要处理注释,因此编译时间更短。

    • 易于使用:视图绑定不需要特别标记的 XML 布局文件,因此在应用中采用速度更快。在模块中启用视图绑定后,它会自动应用于该模块的所有布局。

    反过来,与数据绑定相比,视图绑定也具有以下限制:

    • 视图绑定不支持布局变量或布局表达式,因此不能用于直接在 XML 布局文件中声明动态界面内容。

    • 视图绑定不支持双向数据绑定。

    考虑到这些因素,在某些情况下,最好在项目中同时使用视图绑定和数据绑定。您可以在需要高级功能的布局中使用数据绑定,而在不需要高级功能的布局中使用视图绑定。

    读到这里,这篇“ViewBinding怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: ViewBinding怎么使用

    本文链接: https://lsjlt.com/news/352145.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • ViewBinding怎么使用
      本文小编为大家详细介绍“ViewBinding怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“ViewBinding怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。视图绑定通过视图绑定功能,您可以更...
      99+
      2023-07-05
    • ViewBinding怎么在Android中使用
      ViewBinding怎么在Android中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ViewBinding 有什么作用过于冗余findViewById...
      99+
      2023-06-15
    • Android ViewBinding使用介绍
      目录一、kotlin-android-extensions二、ViewBinding使用1.gradle配置2.在Activity 使用3.在Fragment使用4.在Adapter...
      99+
      2024-04-02
    • Android ViewBinding的使用详解
      目录一、什么是view binding 设置说明 二、基本用法 Activity中使用 Fragment 中使用 Adapter 中使用三、了解源码实现 BaseActivityBa...
      99+
      2024-04-02
    • 详解ViewBinding用法
      目录视图绑定设置说明用法在 Activity 中使用视图绑定在 Fragment 中使用视图绑定与 findViewById 的区别与数据绑定的对比视图绑定 通过视图绑定功能,您可以...
      99+
      2023-03-20
      ViewBinding用法 ViewBinding使用
    • Android视图绑定viewBinding如何使用
      本文小编为大家详细介绍“Android视图绑定viewBinding如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android视图绑定viewBinding如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
      99+
      2023-07-05
    • Android视图绑定viewBinding的使用介绍
      目录在 Activity 中使用 viewBinding在Fragment中使用viewBinding与findViewById的区别与dataBinding的对比替代 KAEGoo...
      99+
      2023-01-28
      Android视图绑定viewBinding Android视图绑定 Android viewBinding
    • Android开发Viewbinding委托怎么实现
      本篇内容介绍了“Android开发Viewbinding委托怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!从Crash到有意思的源码...
      99+
      2023-07-02
    • Android使用ViewBinding的详细步骤(Kotlin简易版)
      ViewBinding 是什么 2020年的3月份 巨佬 JakeWharton 开源的 butterknife 被官宣 停止维护,在github 上 说明 Attention: T...
      99+
      2024-04-02
    • Android Studio3.6新特性之视图绑定ViewBinding使用指南
      View Binding是一项功能,使您可以更轻松地编写与视图交互的代码。在模块中启用视图绑定后,它将为该模块中存在的每个XML布局文件生成一个绑定类。绑定类的实例包含对在相应...
      99+
      2022-06-07
      Android Studio studio 视图 Android
    • Android Studio3.6新特性:视图绑定ViewBinding使用指南(Java版例程)
      视图绑定ViewBinding使用指南(Java版)修改build.gradle修改java代码注意事项工程代码 Android Studio ...
      99+
      2022-06-06
      Android Studio java版 studio JAVA 视图 Android
    • Android Studio 3.6中新的视图绑定工具ViewBinding 用法详解
      前言 我们在Android开发的过程中总是需要获取XML布局中的ViewId,以便给其赋值进行显示,早期我们只能使用 findViewById 这个API,会导致很多的模版代码...
      99+
      2022-06-07
      Android Studio studio 视图 Android
    • myeclipse怎么使用
      myeclipse怎么使用?首先双击打开软件,主界面如图二所示然后点击文件---->新建---->Java项目在项目名那里输入你要新建的项目名称,名称随意。名称输入完之后直接点击完成...
      99+
      2022-02-23
      java教程 myeclipse
    • 怎么使用SQLite3
      这篇文章主要讲解了“怎么使用SQLite3”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用SQLite3”吧!开始使用这个功能强大且通用的数据库吧。应...
      99+
      2024-04-02
    • 怎么使用IndexedDB
      这篇文章主要讲解了“怎么使用IndexedDB”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用IndexedDB”吧!深入研究IndexedDB AP...
      99+
      2024-04-02
    • 怎么使用hanganalyze
      本篇内容主要讲解“怎么使用hanganalyze”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用hanganalyze”吧!hanganalyze 和sy...
      99+
      2024-04-02
    • 怎么使用pg_rewind
      本篇内容主要讲解“怎么使用pg_rewind”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用pg_rewind”吧!pg_rewind  是po...
      99+
      2024-04-02
    • 怎么使用DBV
      这篇文章主要介绍“怎么使用DBV”,在日常操作中,相信很多人在怎么使用DBV问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用DBV”的疑惑有所帮助!接下来,请跟着小编一...
      99+
      2024-04-02
    • 怎么使用RMAN
      本篇内容介绍了“怎么使用RMAN”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!RMAN的备份脚本可以存储在...
      99+
      2024-04-02
    • 怎么使用MindMaster
      本篇内容主要讲解“怎么使用MindMaster”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用MindMaster”吧!MindMaster可谓是思维导图...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作