【Kotlin×Android】配列のリスト表示からイベント処理まで
Kotlinでは配列かリソースからリストを表示することができますが、
今回はKotlin側で生成した配列をリスト表示してみましょう。
ListViewを追加する
GUIを操作するかxmlを編集してListViewを追加しましょう。
xmlから追加する場合は以下の記述を追加します
1 2 3 4 5 |
<ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content" /> |
リストビューを追加します。
widthは親と同じ大きさに設定し
heightは要素数に応じて大きさが変わるようにします。
リスト表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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を使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
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を使って長押しされた要素を削除します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
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 } } } |
