目次
- 1この講座について
- 2イントロダクション
- 2..1Lesson 7に含まれている記事
- 3前提知識
- 4この講座で学べること
- 5概要
- 6アプリの概観
- 7概念:RecyclerView
- 8Adapterパターン
- 9RecyclerViewの実装
- 10タスク:RecyclerViewとAdapterを実装する
- 10.1ステップ1:LayoutManagerを使ってRecyclerViewを追加する
- 10.2ステップ2:リストアイテムレイアウトとテキストビューホルダーを作成する
- 10.3ステップ3:SleepNightAdapterを作成する
- 10.4ステップ4:RecyclerViewにAdapterについて伝達する
- 10.5ステップ5:データをアダプターに送る
- 10.6ステップ6:ビューホルダーがどのように使いまわされるかを確認する
- 11タスク:全データ用のViewHolderを作成する
- 11.1ステップ1:アイテムレイアウトを作成する
- 11.2ステップ2:ViewHolderを作成する
- 11.3ステップ3:SleepNightAdapterのViewHolderを使う
- 12タスク:コードを改善する
- 12.1ステップ1:onBindViewHolder()をリファクタリングする
- 12.2ステップ2:onCreateViewHolderをリファクタリングする
- 13完成済みプロジェクト
- 14まとめ
まとめ
- リストや格子状のデータを表示することはAndroidにおけるUIタスクの最も一般的なタスクの一つです。RecyclerViewは非常に大きなリストなどを表示する際にも効率的に表示できるようにデザインされています。
- RecyclerViewはその時に画面上に表示されるアイテムのみを処理、描写します。
- アイテムが画面外に出た時は、そのアイテムのビューは再利用されます。これはアイテムが次に画面に表示される新しいアイテムに充てられることを意味します。
- ソフトウェア開発におけるAdapterパターンはオブジェクトが別のAPIと共に動作する手助けをする開発手法パターンの一つです。RecyclerViewはアプリのデータを表示できるように変換するためにアダプターを利用します。そうすることでアプリのデータの保存方法や処理方法に関する記述を変更する必要がなくなります。
データをRecyclerViewで表示するには、以下のものが必要です。
- RecyclerView RecyclerViewのインスタンスを作成するには、レイアウトファイル内でRecyclerView要素を定義してください。
- LayoutManager RecyclerViewはRecyclerView内のアイテムのレイアウトを格子状やリストのように構成させるために、LayoutManagerを使います。
レイアウトファイル中のRecycleView内で、レイアウトマネージャーにapp:layoutManager属性を設定します。(LinearLayoutManagerやGridLayoutManagerなど)
また、プログラムからRecyclerView用のLayoutManagerを設定することもできます。(これは後の記事で学習する技術になります)
- それぞれのアイテム用のレイアウト XMLレイアウトファイル内でアイテムごとのレイアウトを作成します。
- Adapter データを準備し、どのようにViewHolderで表示するかを決めるアダプターを作成します。アダプターとRecyclerViewを紐づけます。
RecyclerViewが動作しているとき、RecyclerViewは画面上にどのようにデータを表示するかを知るためにアダプターを使います。
アダプターは次のメソッドの実装を必要とします。
- アイテムの数を返すためのgetItemCount()
- リスト内のアイテム用のViewHolderを返すためのonCreateViewHolder()
- データをリスト内のアイテム用のビューに対応させるためのonBindViewHolder()
- ViewHolder ViewHolderにはアイテムのレイアウトからアイテムを表示するためのビュー情報が含まれています。
- アダプター内のonBindViewHolder()メソッドはデータをビューに対応させます。このメソッドは常にオーバーライドする必要があります。一般的には、onBindViewHolder()はアイテム用のレイアウトをインフレートし、データをレイアウト内のビューに入れます。
- RecyclerViewはデータに関して何も知らないので、データに変更があったときにはAdapterがRecyclerViewに通知する必要があります。
Adapterにデータの変更を通知するにはnotifyDataSetChanged()を使います。
お疲れさまでした。次の講座は 7.2 DiffUtilとRecycleViewのデータバインディングです。
コメント