RecyclerViewをプロが使用するためのヒント。 パート1

RecyclerViewをプロが使用するためのヒント。パート1







この記事を書くことにしました Googleがかなり前にリリースしたにもかかわらず、多くの開発者がRecyclerView



を使用するときにミスをすることに気付きました。







ここで説明するポイントは、Google Devsのさまざまなレポートや資料で言及されています。







この記事では、 このビデオの重要なポイントについて簡単に説明しますが、今すぐ見る必要はありません。 しかし、私は記事を読んだ後、完全に見ることを推奨します。







1. setHasFixedSize属性



recyclerView



がその子を動的にサイズ変更する予定がない場合、属性recyclerView.setHasFixedSize(true)



設定します。







その結果、リストアイテムでデータが更新されるたびにrecyclerView



は再描画されず、このアイテム自体が再描画されます。







2.クリックリスナー



onCreateViewHolder(...)



でクリックハンドラーを設定します。







ユーザーがリスト項目をクリックするたびに、 viewHolder



はこのクリックが発生したアダプターの位置を報告します( vh.getAdapterPosition()



)。 エレメントはアダプター内で移動でき、関連付けられたview



コンポーネントは再作成されないため、これは重要です。







その結果、 view



コンポーネントが作成されるまでに、次のことが発生する可能性があります。たとえば、リストアイテムは位置2にありますが、ユーザーがクリックすると、要素はすでに位置5になります。したがって、 vh.getAdapterPosition()



正しいリストインデックスが受信されるようにします。







3.さまざまなタイプのビューコンポーネントの使用



異なるタイプのview



コンポーネント(たとえば、 R.layout.view_one



)を使用する場合は、 layout



直接返しlayout



。







アダプターがさまざまなタイプのview



コンポーネントをサポートしている場合、 getItemViewType



およびonCreateViewHolder



は以下の画像のようになります。 対応するタイプのview



コンポーネントに必要なロジックを実装するには、 onCreateViewHolder



メソッド内にswitch



を記述する必要があります。







標準のgetItemViewTypeおよびonCreateViewHolder







ただし、これらのタイプの代わりに、すぐにlayout



を返すことができます。 これにより、 onCreateViewHolder



ボイラープレートコードがonCreateViewHolder



。







CreateViewHolderにアップロード







この手法は、常に使用することはできません。 場合によっては、選択した各layout



内で、さまざまなケースでより複雑なロジックが必要になることがあります。 ただし、これが当てはまらない場合、返されるlayout



は、さまざまなタイプのview



コンポーネントを操作する正しい方法です。







4. DiffUtil



DiffUtil



を使用して新しいデータをRecyclerView



に追加します。







recyclerView



のデータが変更されるたびに、ほとんどの開発者はnotifyDataSetChanged()



メソッドを呼び出して、更新されたデータをUIに表示します。 彼らは、この方法がリソース集約型であること、そしてこれがDiffUtil



がはるかに効率的に処理する場所であることを単純に知りません。







DiffUtil



は、2つのリストの差を更新リストとして計算し、最初のリストを2番目のリストに変換できるユーティリティクラスです。 recyclerView



アダプターで更新を計算するために使用できます。 DiffUtil



を使用するには、 DiffUtil



を実装する必要があります。これには、 DiffUtil



ロジックを実装するために必要ないくつかのメソッドがあります。







パブリックメソッドDiffUtil.Callback







DiffUtil



の最大の利点は、 RecyclerView



では、リスト全体を再描画する代わりにTextView



特定の要素のTextView



内の特定のテキストを更新できることTextView



。 これを行うには、 onChangePayload



メソッドを実装する必要があります。 このテーマに関する非常に良い記事があります。







2番目の部分では、 RecyclerView



活用するためのその他のヒントを見ていきます。







→RecyclerViewを専門的に使用するためのヒント。 パート2








All Articles