13

ViewHolderパターンでViewHolderを静的なものにすることは、パフォーマンスにとって重要ですか?

ViewHolderオブジェクトは、各コンポーネントビューをレイアウトのタグフィールド内に格納するため、繰り返し検索しなくてもすぐにアクセスできます。まず、ビューの正確なセットを保持するクラスを作成する必要があります。例えば:

static class ViewHolder {
  TextView text;
  TextView timestamp;
  ImageView icon;
  ProgressBar progress;
  int position;
}
4

3 に答える 3

8

パフォーマンスにとって重要ではなく、使用することです。クラスが静的でない場合ViewHolder-親クラスのインスタンスを提供する必要があります。

No enclosing instance of type Type is accessible. 
Must qualify the allocation with an enclosing instance of type Type 
(e.g. x.new A() where x is an instance of Type).
于 2012-09-11T11:14:44.300 に答える
1

編集:質問を誤解しました-あなたはそれを作ることについて具体的に質問しているようですstatic。これはパフォーマンスにとって重要ではないはずですが、アイデアはあらゆる点で役立ちます。

ここでの最終編集:Javaの静的ネストされたクラス、なぜですか?

====

以下の元の答え:

重いListView(または他の種類のリサイクルされたAdapterView)からパフォーマンスを引き出すのは非常に便利です。ただし、パフォーマンスを何らかの方法でプロファイリングするのが最善の方法です。

また、Google IO 2010では、次の方法を推奨しています。

http://www.youtube.com/watch?v=wDBM6wVEO70

編集:

また、パフォーマンスをプロファイルするためのtraceviewへのリンクもありますが、どの程度うまく機能するかはわかりません。

http://developer.android.com/tools/debugging/debugging-tracing.html

于 2012-09-11T11:10:14.850 に答える
-3

それを行うことは必須ではありません。ただし、これを行うために使用する場合、アダプタビューがnullのときにビューを再度使用します。ビューを作成し、ビューパーツに値を割り当て、静的クラスViewHolderを使用してビュー全体にタグを付けます。したがって、戻ってきてビューがnullでない場合、タグを取得するために表示されている部分が表示されます。これにより、作成するオブジェクトが少なくなり、アダプターの作業負荷も少なくなります。

于 2012-09-11T11:18:40.350 に答える