summaryrefslogtreecommitdiff
path: root/core/java/android/preference/Preference.java
diff options
context:
space:
mode:
authorSuchi Amalapurapu <asuchitra@google.com>2009-09-28 00:29:15 -0700
committerSuchi Amalapurapu <asuchitra@google.com>2009-09-28 00:46:05 -0700
commit01dbc2ed55a081d41d233e891ea1ea1b0484f383 (patch)
tree10753db0a8f63805d4233d85247261028ed43ce8 /core/java/android/preference/Preference.java
parent81384bf927c47a4efa653b14273084a13e67e3ac (diff)
Cache inflated view to avoid inflation of layouts in preferences
If layout id is specified for a Preference object, convertView is set to null in its adapter which results in inflation of Preference view in getView each time the Preference object is laid out on the screen. Just use an instance variable to cache the inflated view nulling it whenever the layout changes and use it in initing the convertView in getView.
Diffstat (limited to 'core/java/android/preference/Preference.java')
-rw-r--r--core/java/android/preference/Preference.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java
index 08a2a9f37aaa..cebb75c6e37f 100644
--- a/core/java/android/preference/Preference.java
+++ b/core/java/android/preference/Preference.java
@@ -102,6 +102,7 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
private int mLayoutResId = com.android.internal.R.layout.preference;
private int mWidgetLayoutResId;
private boolean mHasSpecifiedLayout = false;
+ private View mLayoutView;
private OnPreferenceChangeInternalListener mListener;
@@ -336,7 +337,7 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
if (!mHasSpecifiedLayout) {
mHasSpecifiedLayout = true;
}
-
+ mLayoutView = null;
mLayoutResId = layoutResId;
}
@@ -360,6 +361,7 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
* @see #setLayoutResource(int)
*/
public void setWidgetLayoutResource(int widgetLayoutResId) {
+ mLayoutView = null;
mWidgetLayoutResId = widgetLayoutResId;
}
@@ -387,7 +389,10 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
*/
public View getView(View convertView, ViewGroup parent) {
if (convertView == null) {
- convertView = onCreateView(parent);
+ if (mLayoutView == null) {
+ mLayoutView = onCreateView(parent);
+ }
+ convertView = mLayoutView;
}
onBindView(convertView);
return convertView;