Как я могу создать массив кнопок в студии Android в Котлине? Я создал кнопки с их идентификаторами в XML-файле, теперь я хочу использовать те же кнопки в своем коде Kotlin в качестве элементов массива.
Я пробовал что-то вроде этого:
var buttons: Array<Button> = Array(25)
а потом:
buttons[0] = btn1 // btn1 as the id from xml file
Однако имена кнопок из xml не работают в файле kotlin, как я могу их использовать?
Предположим, у вас есть такой макет:
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:visibility = "visible"
android:orientation = "vertical">
<Button android:id = "@+id/btOne" android:layout_width = "wrap_content" android:layout_height = "wrap_content"
android:text = "one"/>
<Button android:id = "@+id/btTwo" android:layout_width = "wrap_content" android:layout_height = "wrap_content"
android:text = "two"/>
<Button android:id = "@+id/btThree" android:layout_width = "wrap_content" android:layout_height = "wrap_content"
android:text = "three"/>
</LinearLayout>
Во-первых, примените плагин kotlin extensions для синтетического синтаксиса в вашем build.gradle с помощью
apply plugin: 'kotlin-android-extensions'
Затем вы можете просто инициализировать массив кнопок в своем коде, выполнив:
val buttons = arrayOf(btOne, btTwo, btThree)
В противном случае, если вы не хотите использовать синтетический язык kotlin, просто используйте старый синтаксис findviewbyid.
val buttons = arrayOf(
findViewById(R.id.btOne),
findViewById(R.id.btTwo),
findViewById<Button>(R.id.btThree)
)