RecyclerViewの基礎
RecyclerViewで大量のリストを効率的に表示します。AdapterとViewHolderを作成し、ViewBindingでデータを接続します。
「RecyclerViewの基礎」はCoddyKit上の無料Android Academyレッスンです。 これはレッスン2/6です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAndroid Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Android Academyコースには全6レッスンが含まれています。
なぜ RecyclerView を使うのか
RecyclerViewは、Androidでスクロール可能な項目リストを表示する標準的な方法です。
古い ListView とは異なり、RecyclerViewには次の特徴があります。
- スクロールに応じてビューを再利用するため、画面に収まる数だけを作成する
- 縦方向のリスト、横方向のリスト、グリッドに対応する
- LayoutManagerを使って高度にカスタマイズできる
RecyclerViewのアーキテクチャ
RecyclerViewを動作させるには、3つの要素が必要です。
- RecyclerView — レイアウトXMLに配置するウィジェット
- Adapter — データを項目ビューにバインドする
- ViewHolder — 各リスト項目内のビューへの参照を保持する
AdapterはViewHolderを作成し、ユーザーのスクロールに応じてデータをバインドします。
XMLへのRecyclerViewの追加
レイアウトにウィジェットを追加し、build.gradleで依存関係を宣言します。
<!-- In res/layout/activity_main.xml -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- app/build.gradle dependencies: -->
<!-- implementation 'androidx.recyclerview:recyclerview:1.3.2' -->項目レイアウト
リストの各項目用に、個別のXMLファイルを作成します。例:res/layout/item_fruit.xml
<!-- res/layout/item_fruit.xml -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvCalories"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp" />
</LinearLayout>データモデル
リスト内の各項目を表すデータクラスを定義します。
data class Fruit(
val name: String,
val calories: Int
)Adapterの作成
Adapterはデータを項目レイアウトにバインドします。主なメソッドは3つあります。
onCreateViewHolder— 項目XMLをインフレートするonBindViewHolder— 1つの項目にデータを設定するgetItemCount— 項目の総数を返す
Adapterの実装
RecyclerView Adapterの完全で最小限の実装例です。
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
class FruitAdapter(
private val fruits: List<Fruit>
) : RecyclerView.Adapter<FruitAdapter.ViewHolder>() {
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val tvName: TextView = view.findViewById(R.id.tvName)
val tvCalories: TextView = view.findViewById(R.id.tvCalories)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_fruit, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val fruit = fruits[position]
holder.tvName.text = fruit.name
holder.tvCalories.text = "${fruit.calories} kcal"
}
override fun getItemCount() = fruits.size
}Activityでの設定
ActivityでRecyclerView、Adapter、LayoutManagerを接続します。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val fruits = listOf(
Fruit("Apple", 95),
Fruit("Banana", 105),
Fruit("Cherry", 50),
Fruit("Mango", 202)
)
val adapter = FruitAdapter(fruits)
binding.recyclerView.apply {
this.adapter = adapter
layoutManager = LinearLayoutManager(this@MainActivity)
}
}GridLayoutManager
LayoutManagerを変更して、1列のリストではなくグリッドを表示します。
LinearLayoutManager— 縦方向または横方向のリストGridLayoutManager(context, spanCount)— N列のグリッドStaggeredGridLayoutManager— Pinterestのような不規則なグリッド
クイックチェック
RecyclerView AdapterにおけるViewHolderの役割は何ですか?
まとめ:RecyclerViewの基本
リストを効率的に表示できるようになりました。
- RecyclerViewはパフォーマンス向上のためにビューを再利用する
- 3つの要素:RecyclerViewウィジェット、Adapter、ViewHolder
- 項目XMLで1行または1カードの見た目を定義する
- Adapterが
onBindViewHolderでデータとビューを接続する - LayoutManagerがリスト、グリッド、不規則なレイアウトを制御する
次は、クリックイベントでリスト項目をタップ可能にします。
よくある質問
「RecyclerViewの基礎」レッスンは無料ですか?
はい。「RecyclerViewの基礎」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Android Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Android Academyコースには全6レッスンが含まれています。
「RecyclerViewの基礎」で何を学びますか?
RecyclerViewで大量のリストを効率的に表示します。AdapterとViewHolderを作成し、ViewBindingでデータを接続します。 ブラウザで直接実行するハンズオンコードでAndroid Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Android Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAndroid Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/6です。
「RecyclerViewの基礎」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAndroid Academyレッスンでコードを書いて実行できますか?
はい。すべてのAndroid Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Kotlinコレクション
- RecyclerViewの基礎
- RecyclerViewのクリックイベント
- SharedPreferences
- DataStore Preferences
- AdaptersとDiffUtil