android - 重命名变量以使 XML id 更清晰

标签 android xml kotlin rename

我一直想让代码更简洁,但我不会放弃。我是说……

为了在 XML 中命名 View 的 ID,我使用了这样的匈牙利符号:

<WHAT> <WHERE> <DESCRIPTION> <SIZE>

例如:tvExampleSectionEmptyBig , tvExampleSectionEmptySmall

以前,使用 Butter Knife 时,我没有编写太多代码,因为要进行绑定(bind),我做了这样的事情:

@BindView (R.id.tvExampleSectionEmptyBig) TextView tvEmptyBig;
@BindView (R.id.tvExampleSectionEmptySmall) TextView tvEmptySmall;

由于匈牙利符号用于避免不同 Activity 、 fragment 等中具有相同名称的 id 之间的冲突,因此代码更加清晰且可重用。它在实践中并不比在 XML 中更多。

这是怎么回事?

Kotlin 有 synthetic ,这让你的生活更轻松,因为有了 View 的 id,绑定(bind)是直接完成的,但是这么长的 id 代码很脏......此外,我使用的所有 View 都是有道理的在名为 ExampleSectionActivity 的 Activity 中,在其变量名称中包含 ExampleSection ?

我想要什么?

当然有更好的解决方案,但最初,我觉得是通过删除给定的 String 来实现重命名变量的方法。当我遵循所有 ID 名称的约定时,它在内部会是这样的:

val tvEmptyBig = tvExampleSectionEmptyBig
val tvEmptySmall = tvExampleSectionEmptySmall

当然,我想以自动化的方式进行。

另一方面,我已经尝试在不带 id 的情况下命名 id 并小心导入,但目前 synthetic 在这方面偶尔会失败,我不得不不断重建。尤其是当我打开另一个 Android Studio 实例时,我经常这样做是为了咨询我拥有的其他项目。

有什么想法吗? :-)

最佳答案

在我看来,您可以做的最简单、最干净的事情是:

private val myTextView: TextView
    get() = f_layoyt_text_view

这样你就不必使用可笑的,至少在 2018 年,ButterKnife 和更不方便的 findViewById

关于android - 重命名变量以使 XML id 更清晰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50964159/

相关文章:

java - 运行 docx4j createhtml.java 文件时出错

java - 无法使用 SAAJ 创建 SOAP 请求

android - Kotlin 中 Holdr 的未解决引用

无需打开应用程序的 Android 通知操作

android - 根据通知重定向到特定屏幕 - android

android - 如何在摩托罗拉 Android 上安装我的应用程序

android - 拒绝申请后如何在谷歌播放控制台更新apk?

Android 从右到左 NavigationDrawer 菜单项不是 RTL

java - Kotlin 的 JvmDefault - 仍然需要声明该方法吗?

java - Kotlin:平台声明冲突