【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
}
}
}