重命名变量以使XML id更整洁

时间:2018-06-21 08:44:25

标签: android xml kotlin rename

我一直想使代码更整洁,但我不放弃它。我的意思是...

要在XML中命名视图的ID,我使用匈牙利表示法,如下所示:

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

例如:tvExampleSectionEmptyBigtvExampleSectionEmptySmall

以前,使用Butter Knife时,我并没有得到太多的编码,因为要做绑定时,我是这样做的:

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

由于匈牙利符号用于避免在不同活动,片段等中具有相同名称的id之间的冲突,因此该代码更加清晰和可重用。

发生了什么事?

Kotlin具有synthetic,这使您的生活更加轻松,因为通过放置视图的ID可以直接完成绑定,但是使用如此长的ID则代码很脏……此外,所有我在名为ExampleSectionActivity的活动中使用的视图是否包含在其变量名ExampleSection中?

我想要什么?

当然有更好的解决方案,但是最初,我的感觉是通过删除给定的String来实现重命名变量的方法。当我在所有ID名称中遵循约定时,以这种方式在内部进行某些操作:

val tvEmptyBig = tvExampleSectionEmptyBig
val tvEmptySmall = tvExampleSectionEmptySmall

但是,当然,我想以一种自动化的方式来做。

另一方面,我已经尝试使用id命名ID并注意导入,但是目前synthetic在这方面偶尔会失败,因此我不得不不断进行重建。特别是当我打开另一个Android Studio实例时,通常我会经常这样做以咨询我拥有的其他项目。

有什么主意吗? :-)

2 个答案:

答案 0 :(得分:1)

我认为,简单易行且最干净的方法是:

private val myTextView: TextView
    get() = f_layoyt_text_view

通过这种方式,您不必使用荒谬的代码,至少在2018年不必使用ButterKnife,甚至更不方便使用findViewById

答案 1 :(得分:0)

几周来,我已经认为,随着Android Studio的最新稳定更新,在不同的活动或片段中重复ID的名称没有问题。因此,不再需要放置长变量名。只有一点点的注意进口,一切都像一个魅力,更具可读性和可重用性。 :-)