RecyclerView
RecyclerViewはListViewより柔軟で多機能なリスト部品をつくれるので、現在はListViewよりもRecyclerViewを使うことが一般的
acitivity_main.xml
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvDriverList"
android:layout_width="" />
res/layout/item_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/item_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"/>
</LinearLayout>
kotlin+java/com.example.app/model/Item.kt(アダプタークラスの作成)
package com.example.app.model
data class Item(val title: String, val description: String)
kotlin+java/com.example.app/adapter/ItemAdapter.kt(アダプターの作成)
package your_package_name.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import your_package_name.R
import your_package_name.model.Item // Itemクラスをインポート
class ItemAdapter(
private val itemList: List<Item>,
private val onItemClick: (Item) -> Unit
) : RecyclerView.Adapter<ItemAdapter.ItemViewHolder>() {
class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val titleTextView: TextView = view.findViewById(R.id.item_title)
val descriptionTextView: TextView = view.findViewById(R.id.item_description)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_layout, parent, false) <--- ここでitem_layout.xmlを読み込みます
return ItemViewHolder(view)
}
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
val item = itemList[position]
holder.titleTextView.text = item.title
holder.descriptionTextView.text = item.description
holder.itemView.setOnClickListener { onItemClick(item) } <--- アイテムをタップしたときの処理
}
override fun getItemCount(): Int = itemList.size
}
LoginActivity.kt
package your_package_name
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import your_package_name.adapter.ItemAdapter
import your_package_name.model.Item
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
val itemList = listOf(
Item("タイトル1", "説明1"),
Item("タイトル2", "説明2"),
Item("タイトル3", "説明3"),
Item("タイトル4", "説明4")
)
recyclerView.adapter = ItemAdapter(itemList) { item ->
Toast.makeText(this, "${item.title}がクリックされました", Toast.LENGTH_LONG).show()
}
}
}