【Kotlin×Android】配列のリスト表示からイベント処理まで



Kotlinでは配列かリソースからリストを表示することができますが、
今回はKotlin側で生成した配列をリスト表示してみましょう。

ListViewを追加する


GUIを操作するかxmlを編集してListViewを追加しましょう。

xmlから追加する場合は以下の記述を追加します

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />



リストビューを追加します。

widthは親と同じ大きさに設定し
heightは要素数に応じて大きさが変わるようにします。



リスト表示

package com.example.sample01

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.ArrayAdapter
import android.widget.ListView

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

        // リスト表示する配列
        val items = mutableListOf("Kotlin", "C", "Python", "Java", "go")

        // IDでリストビューを取得して配列を設定
        val listView = findViewById<ListView>(R.id.list)
        listView.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)
    }
}



イベント処理を追加する


リストのアイテムがタップされたときのイベントを追加します。

setOnItemClickListenerを使用します。


package com.example.sample01

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.ArrayAdapter
import android.widget.ListView

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

        // リスト表示する配列
        val items = mutableListOf("Kotlin", "C", "Python", "Java", "go")

        // IDでリストビューを取得して配列を設定
        val listView = findViewById<ListView>(R.id.list)
        listView.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)

 
        // イベント処理 
        listView.setOnItemClickListener{av, view, position, id ->
            view.setBackgroundColor(Color.BLUE)
        }
    }
}


タップされたときに背景が青色になるようにしました



イベント処理を追加する(長押し)


要素を長押ししたときのイベントも追加することができます。
setOnItemLongClickListenerを使って長押しされた要素を削除します。


package com.example.sample01

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.ArrayAdapter
import android.widget.ListView

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

        // リスト表示する配列
        val items = mutableListOf("Kotlin", "C", "Python", "Java", "go")

        // IDでリストビューを取得して配列を設定
        val listView = findViewById<ListView>(R.id.list)
        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)
        listView.adapter = adapter
 
        // イベント処理 要素を削除
        listView.setOnItemLongClickListener{av, view, position, id ->
            adapter.remove((view as TextView).text as String)
            false
        }
    }
}