diff options
-rw-r--r-- | core/java/android/preference/Preference.java | 19 | ||||
-rw-r--r-- | core/java/android/preference/PreferenceGroupAdapter.java | 4 |
2 files changed, 12 insertions, 11 deletions
diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java index 08e3d7b..37a8102 100644 --- a/core/java/android/preference/Preference.java +++ b/core/java/android/preference/Preference.java @@ -124,7 +124,7 @@ public class Preference implements Comparable<Preference> { private int mLayoutResId = com.android.internal.R.layout.preference; private int mWidgetLayoutResId; - private boolean mHasSpecifiedLayout = false; + private boolean mCanRecycleLayout = true; private OnPreferenceChangeInternalListener mListener; @@ -275,9 +275,10 @@ public class Preference implements Comparable<Preference> { } a.recycle(); - if (!getClass().getName().startsWith("android.preference")) { - // For subclasses not in this package, assume the worst and don't cache views - mHasSpecifiedLayout = true; + if (!getClass().getName().startsWith("android.preference") + && !getClass().getName().startsWith("com.android")) { + // For non-framework subclasses, assume the worst and don't cache views. + mCanRecycleLayout = false; } } @@ -399,7 +400,7 @@ public class Preference implements Comparable<Preference> { public void setLayoutResource(int layoutResId) { if (layoutResId != mLayoutResId) { // Layout changed - mHasSpecifiedLayout = true; + mCanRecycleLayout = false; } mLayoutResId = layoutResId; @@ -415,7 +416,7 @@ public class Preference implements Comparable<Preference> { } /** - * Sets The layout for the controllable widget portion of this Preference. This + * Sets the layout for the controllable widget portion of this Preference. This * is inflated into the main layout. For example, a {@link CheckBoxPreference} * would specify a custom layout (consisting of just the CheckBox) here, * instead of creating its own main layout. @@ -427,7 +428,7 @@ public class Preference implements Comparable<Preference> { public void setWidgetLayoutResource(int widgetLayoutResId) { if (widgetLayoutResId != mWidgetLayoutResId) { // Layout changed - mHasSpecifiedLayout = true; + mCanRecycleLayout = false; } mWidgetLayoutResId = widgetLayoutResId; } @@ -1659,8 +1660,8 @@ public class Preference implements Comparable<Preference> { return mPreferenceManager.getSharedPreferences().getBoolean(mKey, defaultReturnValue); } - boolean hasSpecifiedLayout() { - return mHasSpecifiedLayout; + boolean canRecycleLayout() { + return mCanRecycleLayout; } @Override diff --git a/core/java/android/preference/PreferenceGroupAdapter.java b/core/java/android/preference/PreferenceGroupAdapter.java index a908ecd..23d0a19 100644 --- a/core/java/android/preference/PreferenceGroupAdapter.java +++ b/core/java/android/preference/PreferenceGroupAdapter.java @@ -153,7 +153,7 @@ class PreferenceGroupAdapter extends BaseAdapter implements OnPreferenceChangeIn preferences.add(preference); - if (!mHasReturnedViewTypeCount && !preference.hasSpecifiedLayout()) { + if (!mHasReturnedViewTypeCount && preference.canRecycleLayout()) { addPreferenceClassName(preference); } @@ -255,7 +255,7 @@ class PreferenceGroupAdapter extends BaseAdapter implements OnPreferenceChangeIn } final Preference preference = this.getItem(position); - if (preference.hasSpecifiedLayout()) { + if (!preference.canRecycleLayout()) { return IGNORE_ITEM_VIEW_TYPE; } |