ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何快速集成Kotter Knife:5分钟上手Android View绑定库的简单教程

如何快速集成Kotter Knife:5分钟上手Android View绑定库的简单教程 如何快速集成Kotter Knife5分钟上手Android View绑定库的简单教程【免费下载链接】kotterknifeView injection library for Android.项目地址: https://gitcode.com/gh_mirrors/ko/kotterknifeKotter Knife 是一款专为 Kotlin 打造的 Android View 绑定库让你用一行属性声明替代繁琐的findViewById快速完成 Activity、Fragment、Dialog 和自定义 View 的控件绑定。本教程带你 5 分钟完成 Kotter Knife 的集成与使用无需深厚基础跟着步骤走就能跑起来 为什么需要 View 绑定库写过 Android 的都知道每个 Activity 里都有一堆这样的代码val title findViewByIdTextView(R.id.title)控件多时这段样板代码又长又容易写错。Kotter Knife 借鉴了 ButterKnife 的思路用Kotlin 属性委托的语法糖把查找和类型转换合并成一行声明val title: TextView by bindView(R.id.title)✨核心优势一览 一行声明完成查找 类型转换告别findViewById 支持必选绑定、可选绑定、列表批量绑定三种模式⚡ 首次访问才查找结果自动缓存不会重复遍历视图树 覆盖Activity、Dialog、Fragment、ViewHolder及任意ViewGroup子类5分钟集成Kotter Knife 快速上手第 1 步获取 Kotter Knife 源码Kotter Knife 没有发布到 Maven Central有两种引入方式任选其一方式做法适用场景SNAPSHOT 依赖在build.gradle中加入 SNAPSHOT 仓库及依赖com.jakewharton:kotterknife:0.1.0-SNAPSHOT想体验完整库结构复制单文件推荐把 ButterKnife.kt 拷入你的源码目录轻量、零额外依赖 推荐第二种整个库的核心实现只有一个 Kotlin 文件复制进来即可使用如果不用 Support 库和 RecyclerView删掉文件里对应的几行 import 就能去掉依赖。第 2 步在自定义 View 中声明绑定以自定义布局PersonView为例绑定姓名相关的两个TextViewclass PersonView(context: Context, attrs: AttributeSet?) : LinearLayout(context, attrs) { val firstName: TextView by bindView(R.id.first_name) val lastName: TextView by bindView(R.id.last_name) // 可选绑定找不到时返回 null不崩溃 val details: TextView? by bindOptionalView(R.id.details) // 列表绑定一次拿到多个同类控件 val nameViews: ListTextView by bindViews(R.id.first_name, R.id.last_name) }声明完成后直接当普通属性使用即可firstName.text Kotter类型自动推导无需再写转换代码。第 3 步在 Activity 或 Fragment 中使用同样的写法同样适用于Activity、Dialog、Fragment以及 RecyclerView 的ViewHolder库为它们各自提供了对应的bindView扩展函数实现位于 ButterKnife.kt。绑定是惰性 缓存的属性第一次被访问时才执行查找之后直接读缓存。官方测试用例 ViewTest.kt 覆盖了缓存、可选、列表等全部场景可以照着读懂每一类绑定的行为。Kotter Knife 绑定函数速查表函数作用控件不存在时bindView(id)绑定单个必选控件抛出IllegalStateExceptionbindOptionalView(id)绑定单个可选控件返回nullbindViews(id1, id2, …)批量绑定返回List任一缺失即抛异常bindOptionalViews(id1, id2, …)批量可选绑定自动过滤缺失项返回存在的控件列表⚠️ 小提醒使用bindOptionalView声明的可空属性时记得写val x: TextView?可选绑定的价值才体现得出。重要提醒Kotter Knife 已停止维护在开始新项目前务必了解项目官方态度——README 明确标注了Deprecated由于每次视图引用都会分配委托对象作者认为这不是一种好的做法并建议不要在生产项目中使用。README.md 中的官方建议是直接改用 Android 官方的View Binding它由编译器生成绑定代码零运行时开销是当下更稳妥的选择。 因此 Kotter Knife 更适合以下场景学习 Kotlin 属性委托在 Android 中的实际应用阅读源码、理解View 绑定的底层实现全文不到 140 行非常适合精读维护存量项目项目结构一览仓库非常精简核心资料如下可点击直达核心源码全部实现ButterKnife.kt惰性委托的缓存机制ButterKnife.kt单元测试用例ViewTest.kt项目说明与用法示例README.md许可证Apache 2.0LICENSE.txt常见问题 FAQQ1Kotter Knife 和 ButterKnife 有什么区别Kotter Knife 是 ButterKnife 的 Kotlin 版本不依赖注解处理器不需要编译期生成代码直接用 Kotlin 属性委托实现绑定语法更简洁。Q2找不到控件会崩溃吗必选绑定bindView/bindViews找不到控件时会抛出IllegalStateException并提示具体 View ID 与属性名见 ButterKnife.kt如果控件可能不存在请改用可选绑定。Q3新项目应该用它吗不建议。官方已明确废弃新项目请直接使用 Android 官方 View BindingKotter Knife 的价值在于作为一份极佳的 Kotlin 源码学习材料。 到这里你已经掌握了 Kotter Knife 的完整用法获取源码、声明绑定、选择绑定模式也了解了它与现代 View Binding 的关系。祝编码愉快【免费下载链接】kotterknifeView injection library for Android.项目地址: https://gitcode.com/gh_mirrors/ko/kotterknife创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表