[解決済み] 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つのクラス。
- ビューホルダーの場合、このクラスはアダプタ内部でのみ使用され、 そのインスタンスはフラグメントやアクティビティなど他の場所に移動しないようにします。これは、ビューホルダーの場合、静的か非静的かに関わらず同じであることを意味します。
パフォーマンスに関する質問に答えるために、以下のサイトを参照してください。 この の回答があります。静的なものは他のものよりも少ないメモリを消費しますが、繰り返しになりますが、私たちはインスタンスをリサイクルするリサイクラーについて話しているので、メモリの影響は問題ではありません。
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Swiftのstatic funcとclass funcの違いは何ですか?
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] Pythonの関数内の静的変数に相当するものは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】静的初期化コードブロックと非静的初期化コードブロックの違いは何ですか?
-
[解決済み] HttpPostによる画像送信
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 匿名)内部クラスを使用することがリークセーフとなるのは、具体的にどのような場合ですか?
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] BottomNavigationViewを新しいNavControllerで使用する際に、フラグメントを生かす方法はありますか?
-
[解決済み] Google Play ストア内部テストのロールアウトが開始できない
-
[解決済み] WhatsAppでメッセージを送信する