1. ホーム
  2. android

[解決済み] RecyclerView Adapterの静的ビューホルダーと非静的ビューホルダーの違いは何ですか?

2023-06-27 03:18:02

質問

この方法(MyAdapter extends RecyclerView.Adapterクラスで静的ネストされたクラスを使用する)の利点は何ですか?

static class MyVH extends RecyclerView.ViewHolder {...}

そして、この方法(メンバーインナークラスを使用)。

  class MyVH extends RecyclerView.ViewHolder {...}

それとも、パフォーマンスには影響せず、どちらのアプローチも使用できるのでしょうか?

どのように解決するのですか?

Androidの質問というより、Javaの質問です。内部クラスのインスタンスをクラス外に持ち出す場合は、メモリリークを避けるために static を使用することが推奨されます。以下のサイトを参照してください。 この の記事で内部クラスのメモリリークについて説明しています。

基本的にnyxが言っていることです。

  • ビューホルダーを静的に宣言すれば、他のアダプタで再利用することができます。とにかく、私はそれを行うことをお勧めしません、新しい分離されたクラスを作成し、複数の場所からそれを使用する、それはより理にかなっています。1つの目的のために1つのクラス。
  • ビューホルダーの場合、このクラスはアダプタ内部でのみ使用され、 そのインスタンスはフラグメントやアクティビティなど他の場所に移動しないようにします。これは、ビューホルダーの場合、静的か非静的かに関わらず同じであることを意味します。

パフォーマンスに関する質問に答えるために、以下のサイトを参照してください。 この の回答があります。静的なものは他のものよりも少ないメモリを消費しますが、繰り返しになりますが、私たちはインスタンスをリサイクルするリサイクラーについて話しているので、メモリの影響は問題ではありません。