diff options
author | Alan Viverette <alanv@google.com> | 2013-08-21 01:58:54 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-08-21 01:58:55 +0000 |
commit | d3927bd0358714fa440cbc0d9595a25b0f571562 (patch) | |
tree | 98dabd1e5187615937ae71fa9c05a06bd313fa80 /core/java/android/preference | |
parent | b4f6a01d51612b9e50dffd95905e9c9add79b5d8 (diff) | |
parent | 791b37e0d9375789c2930ed170d202ea728390fd (diff) | |
download | frameworks_base-d3927bd0358714fa440cbc0d9595a25b0f571562.zip frameworks_base-d3927bd0358714fa440cbc0d9595a25b0f571562.tar.gz frameworks_base-d3927bd0358714fa440cbc0d9595a25b0f571562.tar.bz2 |
Merge "Allow recycling of Preferences in com.android.* packages" into klp-dev
Diffstat (limited to 'core/java/android/preference')
-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; } |