diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2014-04-07 19:12:41 -0700 |
---|---|---|
committer | Fabrice Di Meglio <fdimeglio@google.com> | 2014-04-08 13:22:07 -0700 |
commit | 53c2cf799fddfae7f6fc9ca1840ea345308b79ee (patch) | |
tree | 125c2455745d8c2a100fbf36ffdbf15e35d8a238 /core | |
parent | 19de4ffff3c9ebca70694b55b9784afe86f5c11b (diff) | |
download | frameworks_base-53c2cf799fddfae7f6fc9ca1840ea345308b79ee.zip frameworks_base-53c2cf799fddfae7f6fc9ca1840ea345308b79ee.tar.gz frameworks_base-53c2cf799fddfae7f6fc9ca1840ea345308b79ee.tar.bz2 |
Add support for saving and using the Preference's key value
- make public and hide the PreferenceGroupAdapter class
- add setActivated(int position) to be able to set the activated item
- udpate getView(int position, View convertView, ViewGroup parent) to set/unset
the activated item
Change-Id: I8a653ad6541bb6b7a043ba7c3d95e5ecad924a0d
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/preference/PreferenceGroupAdapter.java | 16 | ||||
-rw-r--r-- | core/res/res/layout/preference_holo.xml | 3 |
2 files changed, 15 insertions, 4 deletions
diff --git a/core/java/android/preference/PreferenceGroupAdapter.java b/core/java/android/preference/PreferenceGroupAdapter.java index 23d0a19..c2e1f51 100644 --- a/core/java/android/preference/PreferenceGroupAdapter.java +++ b/core/java/android/preference/PreferenceGroupAdapter.java @@ -45,8 +45,11 @@ import android.widget.ListView; * adapter, use {@link PreferenceCategoryAdapter} instead. * * @see PreferenceCategoryAdapter + * + * @hide */ -class PreferenceGroupAdapter extends BaseAdapter implements OnPreferenceChangeInternalListener { +public class PreferenceGroupAdapter extends BaseAdapter + implements OnPreferenceChangeInternalListener { private static final String TAG = "PreferenceGroupAdapter"; @@ -88,6 +91,8 @@ class PreferenceGroupAdapter extends BaseAdapter implements OnPreferenceChangeIn } }; + private int mActivatedPosition = -1; + private static class PreferenceLayout implements Comparable<PreferenceLayout> { private int resId; private int widgetResId; @@ -207,6 +212,10 @@ class PreferenceGroupAdapter extends BaseAdapter implements OnPreferenceChangeIn return this.getItem(position).getId(); } + public void setActivated(int position) { + mActivatedPosition = position; + } + public View getView(int position, View convertView, ViewGroup parent) { final Preference preference = this.getItem(position); // Build a PreferenceLayout to compare with known ones that are cacheable. @@ -217,8 +226,9 @@ class PreferenceGroupAdapter extends BaseAdapter implements OnPreferenceChangeIn if (Collections.binarySearch(mPreferenceLayouts, mTempPreferenceLayout) < 0) { convertView = null; } - - return preference.getView(convertView, parent); + View result = preference.getView(convertView, parent); + result.setActivated(position == mActivatedPosition); + return result; } @Override diff --git a/core/res/res/layout/preference_holo.xml b/core/res/res/layout/preference_holo.xml index 1cc803b..1b3ab86 100644 --- a/core/res/res/layout/preference_holo.xml +++ b/core/res/res/layout/preference_holo.xml @@ -23,7 +23,8 @@ android:minHeight="?android:attr/listPreferredItemHeight" android:gravity="center_vertical" android:paddingStart="@dimen/preference_item_padding_side" - android:paddingEnd="?android:attr/scrollbarSize"> + android:paddingEnd="?android:attr/scrollbarSize" + android:background="?android:attr/activatedBackgroundIndicator"> <LinearLayout android:layout_width="wrap_content" |