diff options
| author | Amith Yamasani <yamasani@google.com> | 2011-09-29 15:16:16 -0700 |
|---|---|---|
| committer | Amith Yamasani <yamasani@google.com> | 2011-09-29 15:16:16 -0700 |
| commit | 2d43d283fc0f22b08f43c6db4da71031168e7f59 (patch) | |
| tree | 69331f9c9c804f38b3f9360a11327ffa8654070c /core/java/android/preference/PreferenceScreen.java | |
| parent | 2452ad3028b2a30b0b3abca86fe11ec0465a96b7 (diff) | |
Handle the case of Preference lists that have header views inserted at the top.
Without this change, wrong Preference is returned when you select one.
Subtract the number of headers from the index before querying the adapter.
Needed for:
Bug: 5203189
Change-Id: Iba7277789ebbd7e3e9954931b1ea06c7e34f3c15
Diffstat (limited to 'core/java/android/preference/PreferenceScreen.java')
| -rw-r--r-- | core/java/android/preference/PreferenceScreen.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java index dd9dd2562851..8b9945925da2 100644 --- a/core/java/android/preference/PreferenceScreen.java +++ b/core/java/android/preference/PreferenceScreen.java @@ -26,6 +26,7 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.view.Window; +import android.widget.AbsListView; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.ListAdapter; @@ -190,9 +191,13 @@ public final class PreferenceScreen extends PreferenceGroup implements AdapterVi } public void onItemClick(AdapterView parent, View view, int position, long id) { + // If the list has headers, subtract them from the index. + if (parent instanceof ListView) { + position -= ((ListView) parent).getHeaderViewsCount(); + } Object item = getRootAdapter().getItem(position); if (!(item instanceof Preference)) return; - + final Preference preference = (Preference) item; preference.performClick(this); } |
