私Activity
はGridView
このXMLレイアウトから膨らませています:
<GridView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="@dimen/thumbnail_size"
android:gravity="fill"
android:horizontalSpacing="16dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="16dp" />
その中のアイテムはRelativeLayout
s で、それぞれ固定の高さに設定されています。をプロファイリングしているときに、 を入力すると測定パスが発生し、が再測定されることActivity
に気付きました。次に、アダプターを何度も呼び出して、すべての子ビューを測定します。これは不必要な作業です。(a) どの子が表示されるかは変更されていないため、必要なすべてのビューが既に含まれているためです。(b) どの子ビューもサイズを変更できません。ActionMode
GridView
GridView
getView()
私はそれを知ってListView
おりGridView
、簡単なケースで作業を回避するために彼らができる多くのトリックを持っています.これは、彼らが最適化できる特別なケースのようです. ここで再度GridView
呼び出す必要がないことを認識させるために設定できるものはありますか? getView()
または、スタックの上位に移動して、パスに出入りするときにメジャー パスを完全に回避できActionMode
ますか? 明確にするために、アダプターの動作は正しく、getView()
呼び出しによって問題が発生することはありません。アプリの消費サイクルを減らしたいだけです。
NBアイテムの幅と高さを固定して、を次のように置き換えても、呼び出しGridView
回数は変わりません(ただし、見苦しくなります)。getView()
Activity
<GridView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="beforeDescendants"
android:columnWidth="@dimen/thumbnail_size"
android:horizontalSpacing="16dp"
android:numColumns="3"
android:stretchMode="none"
android:verticalSpacing="16dp" />