Массив кнопок в Котлине

Как я могу создать массив кнопок в студии Android в Котлине? Я создал кнопки с их идентификаторами в XML-файле, теперь я хочу использовать те же кнопки в своем коде Kotlin в качестве элементов массива.

Я пробовал что-то вроде этого:

var buttons: Array<Button> = Array(25)

а потом:

buttons[0] = btn1 // btn1 as the id from xml file

Однако имена кнопок из xml не работают в файле kotlin, как я могу их использовать?

2
4
3 923
1

Ответы 1

Предположим, у вас есть такой макет:

<?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)
        )

Другие вопросы по теме