0Pricing
Android Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Kotlinコレクション
  2. RecyclerViewの基礎
  3. RecyclerViewのクリックイベント
  4. SharedPreferences
  5. DataStore Preferences
  6. AdaptersとDiffUtil
← Android Academyに戻る