動的リストをカスタマイズする Android Jetpack の一部。
カスタマイズ可能
RecyclerView
オブジェクトを選択できます。標準クラスについては、このモジュールの
動的リストの作成:
RecyclerView は、ほとんどのデベロッパーが必要とする機能をすべて備えています。イン
多くの場合、ビューホルダーごとにビューを設計し、
適切なデータでビューを更新するコードです。ただし、アプリに
標準の動作をさまざまな方法で変更できます。
このドキュメントでは、可能なカスタマイズについて説明します。
レイアウトを変更する
RecyclerView
は、レイアウト マネージャーを使用して個々のアイテムを画面上に配置します。また、ユーザーに表示されなくなったアイテムビューを再利用するタイミングを判断します。ビューを再利用(リサイクル)するために、レイアウト マネージャーがアダプターに対し、ビューのコンテンツをデータセットの別の要素で置き換えるよう求めることがあります。この方法でビューをリサイクルすると、不要なビューが作成されず、負荷の高い findViewById()
による検索も行われないため、パフォーマンスが向上します。Android サポート ライブラリには、3 つの標準レイアウト マネージャーが含まれています。
多数のカスタマイズ オプションが用意されています。
LinearLayoutManager
: アイテムを 1 次元のリスト内に配置します。使用LinearLayoutManager
を持つRecyclerView
は、 機能ListView
できます。GridLayoutManager
: は、上の正方形の正方形のように、アイテムを 2 次元のグリッドで配置します。 チェッカーボードRecyclerView
をGridLayoutManager
とともに使用すると、GridView
レイアウトのような機能が得られます。StaggeredGridLayoutManager
: は、各列がわずかにずれた状態で 2 次元のグリッドにアイテムを配置します。 アメリカの国旗に付いた星のように
これらのレイアウト マネージャーがニーズに合わない場合は、次の方法で独自のレイアウト マネージャーを作成できます。
Kubernetes を拡張して、
RecyclerView.LayoutManager
使用します。
アイテム アニメーションを追加する
アイテムが変更されるたびに、RecyclerView
はアニメーターを使用します。
外観を変更します。このアニメーターは、Terraform ワークフローの
RecyclerView.ItemAnimator
クラスです。デフォルトでは、RecyclerView
は以下を使用します。
DefaultItemAnimator
アニメーションを追加します。カスタムのアニメーションを表示したい場合は、RecyclerView.ItemAnimator
を拡張することによって独自のアニメーター オブジェクトを定義できます。
リストアイテムを選択できるようにする
recyclerview-selection
ライブラリを使用すると、ユーザーはタップまたはマウス入力で RecyclerView
リスト内のアイテムを選択できます。これにより、選択したアイテムの視覚的な表示に対するコントロールを維持できます。また、選択の動作を管理するポリシー(選択の対象になり得るアイテム、選択可能なアイテムの数など)に対するコントロールも維持できます。
RecyclerView
インスタンスに選択サポートを追加するには、次の手順を行います。
手順は次のとおりです。
- 使用する選択キーのタイプを決定して、
ItemKeyProvider
。選択したアイテムを識別するために使用できるキータイプは 3 つあります。
Parcelable
そのサブクラスをUri
String
Long
選択キーのタイプについて詳しくは、
SelectionTracker.Builder
をご覧ください。 ItemDetailsLookup
を実装します。RecyclerView
のアイテムView
オブジェクトを更新し、ユーザーが選択または選択解除したことを反映します。選択ライブラリには、選択されたアイテムに対するデフォルトの視覚的装飾は用意されていません。実装時に提供
onBindViewHolder()
。 次のアプローチをおすすめします。onBindViewHolder()
で次を呼び出します。setActivated()
- 対象外setSelected()
- オン 次を含むView
オブジェクトtrue
またはfalse
(アイテムが を選択します。- ビューのスタイルを更新し、有効なステータスを表示します。水 推奨事項: 色状態 list リソースを使用してスタイルを設定します。
ActionMode
を使用する 選択項目に対してアクションを実行するためのツールをユーザーに提供します。- 解釈されたセカンダリ アクションを実行します。
- すべてを
SelectionTracker.Builder
で組み立てます。 - 選択をアクティビティのライフサイクル イベントに追加します。
ItemDetailsLookup
を使用すると、選択ライブラリは MotionEvent
が指定された RecyclerView
アイテムに関する情報にアクセスできます。これは実質的には、
ItemDetails
バックアップされているインスタンス、または Cloud Logging から
RecyclerView.ViewHolder
作成します。
まず
SelectionTracker.SelectionObserver
選択内容が変更されたときに通知が届きます。選択範囲が最初に作成されたら
ActionMode
を開始してユーザーに提示し、
選択できるようになります。たとえば、ファイルの削除ボタンを
ActionMode
バーをクリックし、バーの戻る矢印を接続して消去します
選択します。選択内容が空になった場合 - ユーザーが
終了アクション モードになります。
イベント処理パイプラインの最後に、ライブラリが、ユーザーがアイテムをタップして有効にしようとしている、あるいは、ユーザーが選択したアイテムをドラッグしようとしていると判断することがあります。こうした解釈に対応するには、適切なリスナーを登録します。詳細情報
詳しくは、
SelectionTracker.Builder
。
次の例は、これらの要素を組み立てる方法を示しています。
var tracker = SelectionTracker.Builder( "my-selection-id", recyclerView, StableIdKeyProvider(recyclerView), MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build()
SelectionTracker tracker = new SelectionTracker.Builder<>( "my-selection-id", recyclerView, new StableIdKeyProvider(recyclerView), new MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build();
独自の
SelectionTracker
アプリは同じ
RecyclerView.Adapter
初期化するために使用し、RecyclerView
を
SelectionTracker.Builder
。そのため、SelectionTracker
インスタンスを作成したら、RecyclerView.Adapter
に挿入します。そうしないと、アイテムの
onBindViewHolder()
メソッドから選択されたステータス。
アクティビティのライフサイクル イベント全体で選択状態を保持するには、
選択トラッカーの
onSaveInstanceState()
および
onRestoreInstanceState()
アクティビティのメソッドから
onSaveInstanceState()
および
onRestoreInstanceState()
あります。また、アプリは一意の選択 ID を
SelectionTracker.Builder
コンストラクタ。この ID は必須です。なぜなら、アクティビティやフラグメントに選択可能なリストが複数ある場合は、それらすべてを保存された状態に維持する必要があるためです。
参考情報
詳細については、次のリファレンスをご覧ください。
RecyclerView
を使用する Sunflower デモアプリ。- RecyclerView を使ってスクロール可能なリストを表示する Codelab。
- Android Kotlin の基礎: RecyclerView の基礎 Codelab。