string-array

Kotlin

res/values/strings.xml

<resources>
    <string name="app_name">myapp</string>
    <string-array name="lv_menu">
        <item>menuA</item>
        <item>menuB</item>
        <item>menuC</item>
    </string-array>
</resources>

res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lvMenu"
    android:entries="@array/lv_menu" />

kotlin+java/com.example.app2/MainActivity.kt

import ...

class MainActivity : AppCompatActivity() [
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat. ... { ... }

        val lvMenu = findViewById<ListView>(R.id.lvMenu)
        lvMenu.onItemClickListener = ListItemClickListener()
    }

    private inner class ListItemClickListener : AdapterView.OnItemClickListener {
        override fun onItemClick(parent: AdapterView<*>, view: View, position: Int, id: Long) {
            val item = parent.getItemAtPosition(position) as String
            val show = "あなたの選んだメニューは $item"
            Toast.makeText(this@MainActivity, show, Toast.LENGTH_LONG).show()
        }
    } 
}
引数:型
parent: AdapterView<*>タップされたリスト全体
view: Viewタップされた1行分の画面部品
position: Intタップされた行番号
id: Long

getItemAtPosition(行番号)は、リストデータのうちでその行番号に該当するデータを取得できます。

ただし、戻り値がAny型なので、as StringとしてString型にキャストします。

画面下部に文字列が表示され、自動的に消えていくギミックを「トースト」といいます。

Toast.makeText(context、表示文字列、トーストの表示時間)

表示時間はToast.LENGTH_LONGとToast.LENGTH_SHORTの2種類しかありません。

※context … トーストを表示させるActivityオブジェクト(場所)

BACK