有时,当我们创建一个视图列表(比如说按钮)时,我们需要一个视图,然后使用这个函数执行一个 for 循环。
when (view.id) {
// Boxes using Color class colors for background
R.id.box_one_text -> view.setBackgroundColor(Color.DKGRAY)
R.id.box_two_text -> view.setBackgroundColor(Color.GRAY)
// Boxes using Android color resources for background
R.id.box_three_text -> view.setBackgroundResource(android.R.color.holo_green_light)
R.id.box_four_text -> view.setBackgroundResource(android.R.color.holo_green_dark)
R.id.box_five_text -> view.setBackgroundResource(android.R.color.holo_green_light)
else -> view.setBackgroundColor(Color.LTGRAY)
}
}
问题是,使用listOf创建的对象和这个有什么不同,而如果我们主要使用第一个(也就是访问R),或者DataBinding,那么View类型的方法和实例化需要什么,在除了我上面描述的
val button : Button = findViewById(R.id.button0)
val numButtons : List<View> =
listOf(button0,button1,button2,button3,
button4,button5,button6,button7,
button8,button9,button_ok,button_del)
没有人会以老式的方式打扰您,通过 id 搜索您的界面元素
在这种情况下,最好禁用
Android Extensions为您工作的插件。为了不减慢编译速度,不生成不必要的代码。https://kotlinlang.org/docs/tutorials/android-plugin.html
但我认为拒绝一件让你的生活更轻松的方便的事情是不对的。
那些。这
Android Extensions将使您可以直接访问您的按钮button0,button1,button2,...,但不是listOf()一种方法。它为它们生成与它们相同的名称
id。但这些正是对象,它们不应该与来自R.id.*.R是一个包含所有资源标识符的特殊类,它们是整数类型intJava - 如您所知,以防万一,我提醒您,一种具有强类型的语言,即:
如果你想出你自己的语言,这是可能的 - 那么请(提示 - 有这样的编程语言),但不是在 Java 中