Recyclerview

メモリ使用量を最小限に抑えつつ、大規模なデータのセットを UI に表示します。
最新の更新 現在の安定版リリース 次のリリース候補 ベータ版リリース アルファ版リリース
2020 年 4 月 29 日 1.1.0 - - 1.2.0-alpha03

依存関係の宣言

RecyclerView への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

    dependencies {
        implementation "androidx.recyclerview:recyclerview:1.1.0"
        // For control over item selection of both touch and mouse driven selection
        implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01"
    }
    

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するためのアイデアをお持ちの場合は、お知らせください。新しい問題を報告する前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.2.0

バージョン 1.2.0-alpha03

2020 年 4 月 29 日

androidx.recyclerview:recyclerview:1.2.0-alpha03 がリリースされました。バージョン 1.2.0-alpha03 に含まれるコミットについては、こちらをご覧ください

新機能

  • RecyclerView に、ネストされたスクロールと連携するスクロールをプログラムによって行える nestedScrollBy メソッドが追加されました(Ibaa58)。

バージョン 1.2.0-alpha02

2020 年 4 月 1 日

androidx.recyclerview:recyclerview:1.2.0-alpha02 がリリースされました。バージョン 1.2.0-alpha02 に含まれるコミットについては、こちらをご覧ください

RecyclerView のこれ以降のバージョンは、ViewPager2 の古いバージョンと互換性がありません。現在 androidx.viewpager2:viewpager2:1.0.0 以前を使用している場合、確実に androidx.viewpager2:viewpager2:1.1.0-alpha01 に更新してください。

新機能

  • MergeAdapter

    • MergeAdapter: 複数のアダプタをリニアに結合できる新しい RecyclerView アダプタです。
    MyAdapter adapter1 = ...;
    AnotherAdapter adapter2 = ...;
    MergeAdapter merged = new MergeAdapter(adapter1, adapter2);
    recyclerView.setAdapter(mergedAdapter);
    

    上記のサンプルの場合、MergeAdapter は adapter1adapter2 の順にアイテムを表示します。

  • RecyclerView.Adapter 遅延状態の復元:

    • 新しい API を RecyclerView.Adapter クラスに追加しました。これにより Adapter はレイアウト状態を復元するタイミングを制御できます。

    • たとえば下記を呼び出して、

    myAdapter.setStateRestorationStrategy(StateRestorationStrategy.WHEN_NOT_EMPTY);
    

    スクロール位置を復元する前に、Adapter が空でない状態になるまで RecyclerView を待機させることができます。

  • CollectionInfo と CollectionItemInfo がデフォルトで入力されなくなります。

    • ユーザー補助機能サービス(Talkback など)で引き続きカウントとアイテム インデックスを表示する場合、CountInfo と CollectionItemInfo を自分で入力する必要があります。

    • これらのオブジェクトは、ユーザーが認識したアイテム(区切り、ヘッダー、複数の認識アイテムを表す RecyclerView アイテムなど)を判別できないため、フレームワークで入力されません。

バグの修正

  • ビューポートのサイズが変更されたときに RecyclerView でビューポートの外側の View へのアンカリングが回避されるようになりました。
  • 1 つ目のリストの元のアイテムが 2 つ目のリストで重複している場合に誤って差分が計算される場合がある、DiffUtil のバグを修正しました。(b/123376278

バージョン 1.2.0-alpha01

2019 年 12 月 18 日

androidx.recyclerview:recyclerview:1.2.0-alpha01 がリリースされました。バージョン 1.2.0-alpha01 に含まれるコミットについては、こちらをご覧ください

バグの修正

  • RTL 描画とタッチ精度に関する FastScroller の軽微な問題を修正しました(b/143789932aosp/1130438
  • ItemTouchHelper アニメーションの実行中に ItemTouchHelper を RecyclerView から削除したときのクラッシュを修正しました(b/140447176aosp/1167575

バージョン 1.1.0

バージョン 1.1.0

2019 年 11 月 20 日

androidx.recyclerview:recyclerview:1.1.0 がリリースされました。バージョン 1.1.0 に含まれる commit については、こちらをご覧ください

1.0.0 以降の重要な変更

  • PagerSnapHelperLinearSnapHelper で、clipToPadding の値に関係なく、RecyclerView のパディングが考慮されるようになりました(b/139452422b/139012032aosp/1103182aosp/1106715aosp/1130728
  • RecyclerView.setLayoutTransition(LayoutTransition) は正式にサポートが終了しており、非 null の値で呼び出されると IllegalArgumentException をスローします。代わりに RecyclerView.setItemAnimator(ItemAnimator) を使用してください(aosp/839414
  • aosp/723649: RecyclerView が NestedScrollingChild3 を実装し、ネストされたスクロールのどの親もネストされたスクロール距離を消費しなくなった場合に通知できるようになりました。デベロッパーのコードが現在 RecyclerView.onNestedScroll(View, int, int, int, int, int) をオーバーライドしている場合、それはもう呼び出されない可能性が高いので、代わりに RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]) をオーバーライドする必要があります。
  • RecyclerView にデフォルトのスタイル属性 recyclerViewStyle が追加されました。これにより、テーマのデフォルト スタイルを設定できます。
  • ViewCompat accessibility actions API で RecyclerView ItemDelegate が破損することはなくなりました。
  • LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) をオーバーライドして、関連付けられた RecyclerView の左右どちらかに追加するレイアウト スペースの量をカスタマイズできます(aosp/931259
  • smoothScrollBy の新しいオーバーロード RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration) を追加しました。これにより、アニメーションの所要時間をミリ秒単位で指定できます(aosp/952807

バージョン 1.1.0-rc01

2019 年 10 月 23 日

androidx.recyclerview:recyclerview:1.1.0-rc01 がリリースされました。バージョン 1.1.0-rc01 に含まれる commit については、こちらをご覧ください

バグの修正

  • RecyclerViewAccessibilityDelegate.ItemDelegate をオーバーライドしたときに「アプリが応答しない」問題を修正しました(aosp/1138057aosp/1133434

バージョン 1.1.0-beta05

2019 年 10 月 9 日

androidx.recyclerview:recyclerview:1.1.0-beta05 がリリースされました。バージョン 1.0.0-beta05 に含まれるコミットについては、こちらをご覧ください

API の変更

  • aosp/1106715aosp/1103182 に対処して、LinearSnapHelper と PagerSnapHelper が clipToPadding の値にかかわらず、RecyclerView の境界の中心にあるビューを、パディングを除いて返すようになります(aosp/1130728

バグの修正

  • RecyclerView が、RecyclerView の子に重複するユーザー補助ノードを生成していた問題を修正しました(aosp/1130618
  • RecyclerViews の仮想ユーザー補助階層が機能しない問題を修正しました。
  • カスタム ItemDelegates が使用されない問題を修正しました。

バージョン 1.1.0-beta04

2019 年 9 月 5 日

androidx.recyclerview:recyclerview:1.1.0-beta04 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

バグの修正

  • PagerSnapHelperLinearSnapHelperclipToPadding の値に関係なく、RecyclerView のパディングが考慮されるようになりました(b/139452422b/139012032aosp/1103182aosp/1106715
  • ネストされた事前スクロールによって NestedScrollingParent がスクロールしたときに、RecyclerView がタッチ インターセプトを禁止していなかったバグを修正しました(b/138668210aosp/1105373)。これは、ViewPager2 などのライブラリで役立ちます。
  • ネストされた事前スクロールがディスパッチされる前に、RecyclerView が常に SCROLL_STATE_DRAGGING になるようになりました(aosp/1105373
  • ジェスチャーがタッチスロップを超えるまでは、ネストされた事前スクロールが実行されなくなりました(b/139530818aosp/1105373
  • ネストされた事前スクロールにディスパッチされた dx 引数と dy 引数は、RecyclerView がその方向にスクロールできない場合、ゼロになります(aosp/1105373

バージョン 1.1.0-beta03

2019 年 8 月 15 日

androidx.recyclerview:recyclerview:1.1.0-beta03 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

API の変更

  • RecyclerView が View.onScrollChanged(int l, int t, int oldl, int oldt) を介してスクロール距離をディスパッチするようになったため、ユーザー補助サービスにスクロールの変化が正確に通知されます(aosp/1007823

バグの修正

  • RecyclerView とユーザー補助に関連する主要なバグスタック オーバーフローのバグを修正しました。(aosp/1099577

バージョン 1.1.0-beta02

2019 年 8 月 7 日

androidx.recyclerview:recyclerview:1.1.0-beta02 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • RecyclerView にデフォルトのスタイル属性 recyclerViewStyle が追加されました。これにより、テーマのデフォルト スタイルを設定できます。

バグの修正

  • スクロールしたときのタッチ インターセプトを RecyclerView が禁止していなかったために、NestedScrollingParent がスクロールするというバグを修正しました(b/131115697aosp/1055911

バージョン 1.1.0-beta01

2019 年 7 月 2 日

androidx.recyclerview:recyclerview:1.1.0-beta01 がリリースされました。このバージョンに含まれる commit については、こちらをご覧ください。

新機能

  • ユーザー補助イベントを介してスクロールが開始されると、RecyclerView がネストされたスクロールに参加するようになりました(aosp/973584

バージョン 1.1.0-alpha06

2019 年 6 月 5 日

androidx.recyclerview:recyclerview:1.1.0-alpha06androidx.recyclerview:recyclerview-selection:1.1.0-alpha06 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • smoothScrollBy の新しいオーバーロード RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration) を追加しました。これにより、アニメーションの所要時間をミリ秒単位で指定できます(aosp/952807

API の変更

  • GridLayoutManagerStaggeredGridLayoutManager は、ユーザー補助用のヘッダーとするフルスパン アイテムへの自動ラベル付けを行わなくなりました(aosp/969703
  • recyclerview-selection での選択の順序(作成時間順)を保持します(aosp/937279

バグの修正

  • ネストされたスクロールの状態で、RecyclerView が誤った速度でフリングしていたバグを修正しました(aosp/961642
  • recyclerview-selection の安定性を改善しました(aosp/960213aosp/926296

バージョン 1.1.0-alpha05

2019 年 5 月 7 日

androidx.recyclerview:recyclerview:1.1.0-alpha05androidx.recyclerview:recyclerview-selection:1.1.0-alpha05 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

新機能

  • LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[]) をオーバーライドして、関連付けられた RecyclerView の左右どちらかに追加するレイアウト スペースの量をカスタマイズできます。(aosp/931259

API の変更

  • DividerItemDecoration ドローアブルを取得する API を追加しました(aosp/937282
  • 両側にカスタムのレイアウト スペースを追加できる新しいメカニズムを優先し、LinearLayout.getExtraLayoutSpace(RecyclerVew.State) のサポートを終了します。新しいメソッドは LinearLayout.calculateExtraLayoutSpace(RecyclerView.state, int[]) です(aosp/931259

バグの修正

  • ジェスチャー選択をクリーンアップしました(aosp/940781
  • 選択の順序(作成時間順)を保持します(b/128455535

バージョン 1.1.0-alpha04

2019 年 4 月 3 日

androidx.recyclerview:recyclerview:1.1.0-alpha04 がリリースされました。このバージョンに含まれるコミットについては、こちらをご覧ください。

バグの修正

  • 以前は RV OnItemTouchListener が ACTION_UP でインターセプトできなかったため、OnItemTouchListener が他のコードから ACTION_UP に応答することをブロックできませんでしたが、修正されました(aosp/916137

バージョン 1.1.0-alpha03

2019 年 3 月 13 日

androidx.recyclerview:recyclerview:1.1.0-alpha03 がリリースされました。このバージョンに含まれる commit の完全なリストについては、こちらをご覧ください。

新機能

  • GridLayoutManager: オプトイン、高解像度の GridLayoutManager スクロールバーの寸法推定(aosp/838836):
    • スパン情報を使用して、GridLayoutManager のスクロールバーの寸法を推定します。
    • 有効にするには、GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) を呼び出して true を渡します。
    • 詳細については、GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) に関するドキュメントをご覧ください。

バグの修正

  • ユーザー補助: ViewHolder がリサイクルされてからリバウンドすると、RecyclerView の RecyclerViewAccessibilityDelegate に関連付けられた ItemDelegate が ViewHolder の itemView に関連付けられず、ユーザー補助に障害が出るというバグがありましたが、修正されました(aosp/917740

バージョン 1.1.0-alpha02

2019 年 1 月 30 日

androidx.recyclerview:recyclerview 1.1.0-alpha02 がリリースされました。

API の変更

  • RecyclerView.suppressLayout(boolean)RecyclerView.isLayoutSuppressed() が優先され、RecyclerView.setLayoutFrozen(boolean)RecyclerView.isLayoutFrozen() のサポートが終了します(aosp/839414
  • RecyclerView.setLayoutTransition(LayoutTransition) は正式にサポートが終了しており、非 null の値で呼び出されると IllegalArgumentException をスローします。(aosp/839414

バグの修正

  • SmoothScroller が停止しない RV のバグを修正しました(aosp/843741
  • スクロール アニメーションの終了時に SCROLL_STATE_IDLE が呼び出されないことがあるバグを修正しました(aosp/812576

バージョン 1.1.0-alpha01

2018 年 12 月 3 日

androidx.recyclerview 1.1.0-alpha01androidx.recyclerview-selection 1.1.0-alpha01 がリリースされました。

androidx.recyclerview 1.1.0-alpha01

API の変更

  • aosp/723649: RecyclerView が NestedScrollingChild3 を実装し、ネストされたスクロールのどの親もネストされたスクロール距離を消費しなくなったことを通知できるようになりました。デベロッパーのコードが現在 RecyclerView.onNestedScroll(View, int, int, int, int, int) をオーバーライドしている場合、それはもう呼び出されない可能性が高いので、代わりに RecyclerView.onNestedScroll(View, int, int, int, int, int, int[]) をオーバーライドする必要があります。

バグの修正

  • TransitionManager を使用して RecyclerView のアイテムを折りたたむ / 展開するときのクラッシュを修正しました(b/37129527
  • RecyclerView.OnItemTouchListener の動作がビューシステムの onInterceptTouchEventonTouchEvent の動作と矛盾するバグを修正しました(aosp/721235
  • スムーズなスクロールに関連するエッジケースのバグをいくつか修正しました(aosp/729718aosp/747168aosp/812576
  • 一般的でない子ビューを処理するように PagerSnapHelper のスナップ方法を修正しました(aosp/795752

androidx.recyclerview-selection 1.1.0-alpha01

バグの修正

  • 選択を削除してデータセットを変更したときの ConcurrentModificationException を修正しました。

RecyclerView-Selection バージョン 1.1.0

Recyclerview-Selection バージョン 1.1.0-rc01

2020 年 2 月 5 日

androidx.recyclerview:recyclerview-selection:1.1.0-rc01 がリリースされました。バージョン 1.1.0-rc01 に含まれる commit については、こちらをご覧ください

バグの修正

  • スクロール可能な AppBarLayout を操作する場合に、ジェスチャー選択でのスクロールが難しいという問題を修正しました(aosp/1193934

RecyclerView-Selection バージョン 1.1.0-beta01

2019 年 12 月 4 日

androidx.recyclerview:recyclerview-selection:1.1.0-beta01 がリリースされました。バージョン 1.1.0-beta01 に含まれるコミットについては、こちらをご覧ください

内部状態の防御チェックと管理に関連する安定性を全般的に改善。

バグの修正

API の変更

  • 選択キータイプ パラメータが欠落しているクラスおよびメソッドに、そのパラメータを追加しました。
  • サポートが終了したメソッド:
    • SelectionTracker.Builder#withPointerTooltype
    • SelectionTracker.Builder#withGestureTooltype
    • これらのメソッドは、デベロッパーがポインタやジェスチャーの動作をデフォルト以外のツールタイプにマッピングするためのものです*。目的に問題があったわけではなく、使用を重ねるうちに、入力動作に関してユーザーが期待することはツールタイプに依存することが明らかになりました。また、Android 入力システムに関する限り、「パッシブ」タッチペンは FINGER ツールタイプです。
    • デフォルトのツールタイプは、ジェスチャーの場合 FINGER、ポインタの場合 MOUSE となります。