summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/preference/Preference.java19
-rw-r--r--core/java/android/preference/PreferenceGroupAdapter.java4
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;
}