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