エンジニア男

勉強したことの忘備録としてつらつら書いていきます。

【Android】ListViewの使い方

ListViewの実装方法のメモ。

 

・公式ドキュメント

https://developer.android.com/reference/kotlin/android/widget/ListView

 

実装の流れ 3step

1, UIにListViewを実装する。

2, 表示したいデータをArrayAdapterに格納する。

3, ListViewにArrayAdapterをsetする。

 

1, UIにListViewを実装する。

<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

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

</LinearLayout>
</layout>

 

2, 表示したいデータをArrayAdapterに格納する。

3, ListViewにArrayAdapterをsetする。

private lateinit var binding: ActivityMainBinding

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

// 表示したデータをArrayAdapterに格納する
val data = arrayOf("青森", "岩手", "秋田", "宮城", "山形", "福島")
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, data)

// ListViewにArrayAdapterをsetする
binding.listView.adapter = adapter
}

}

 

 ArrayAdapterの引数

第1引数: Contextを指定

第2引数: 各項目のレイアウトを指定

第3引数: ListViewに表示させるデータを指定

 

■■■ タップイベントの実装 ■■■

1, イベントハンドラの実装

// 項目をタップした時の処理
binding.listView.setOnItemClickListener { parent, view, position, id ->
// タップ処理
}

// 項目を長押しした時の処理
binding.listView.setOnItemLongClickListener { parent, view, position, id ->
// 長押し時の処理
}

 

onItemClickの引数

第1引数: parent     ⇒  AdapterView: クリックが発生したAdapterView 

第2引数: view        ⇒  View: クリックされたAdapterView内のView

第3引数: pasition   ⇒  Int:  アダプター内のビューの位置 

第4引数: id            ⇒  long: クリックされたアイテムの行ID

 

※カスタムAdapterの実装などは後日記述する。