Loading packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java +18 −15 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.view.View; import android.widget.AdapterView; import androidx.preference.Preference; import androidx.preference.Preference.OnPreferenceClickListener; import androidx.preference.PreferenceViewHolder; import com.android.settingslib.widget.settingsspinner.SettingsSpinner; Loading @@ -31,12 +32,12 @@ import com.android.settingslib.widget.settingsspinner.SettingsSpinnerAdapter; * This preference uses SettingsSpinner & SettingsSpinnerAdapter which provide default layouts for * both view and drop down view of the Spinner. */ public class SettingsSpinnerPreference extends Preference { public class SettingsSpinnerPreference extends Preference implements OnPreferenceClickListener { private SettingsSpinnerAdapter mAdapter; private AdapterView.OnItemSelectedListener mListener; private int mPosition; //Default 0 for internal shard storage. private boolean mIsClickable = true; private int mPosition; private boolean mShouldPerformClick; /** * Perform inflation from XML and apply a class-specific base style. Loading @@ -51,7 +52,7 @@ public class SettingsSpinnerPreference extends Preference { public SettingsSpinnerPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setLayoutResource(R.layout.settings_spinner_preference); setSelectable(false); setOnPreferenceClickListener(this); } /** Loading @@ -64,7 +65,7 @@ public class SettingsSpinnerPreference extends Preference { public SettingsSpinnerPreference(Context context, AttributeSet attrs) { super(context, attrs); setLayoutResource(R.layout.settings_spinner_preference); setSelectable(false); setOnPreferenceClickListener(this); } /** Loading @@ -76,6 +77,13 @@ public class SettingsSpinnerPreference extends Preference { this(context, null); } @Override public boolean onPreferenceClick(Preference preference) { mShouldPerformClick = true; notifyChanged(); return true; } /** Sets adapter of the spinner. */ public <T extends SettingsSpinnerAdapter> void setAdapter(T adapter) { mAdapter = adapter; Loading @@ -101,24 +109,19 @@ public class SettingsSpinnerPreference extends Preference { notifyChanged(); } /** Set clickable of the spinner. */ public void setClickable(boolean isClickable) { if (mIsClickable == isClickable) { return; } mIsClickable = isClickable; notifyChanged(); } @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); final SettingsSpinner spinner = (SettingsSpinner) holder.findViewById(R.id.spinner); spinner.setEnabled(mIsClickable); spinner.setClickable(mIsClickable); spinner.setAdapter(mAdapter); spinner.setSelection(mPosition); spinner.setOnItemSelectedListener(mOnSelectedListener); if (mShouldPerformClick) { mShouldPerformClick = false; // To show dropdown view. spinner.performClick(); } } private final AdapterView.OnItemSelectedListener mOnSelectedListener = Loading packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/SettingsSpinnerPreferenceTest.java +0 −20 Original line number Diff line number Diff line Loading @@ -89,24 +89,4 @@ public class SettingsSpinnerPreferenceTest { assertThat(mSpinnerPreference.getSelectedItem()) .isEqualTo(mSpinner.getAdapter().getItem(1)); } @Test public void onBindViewHolder_setClickableTrue_isClickableTrue() { mSpinnerPreference.setClickable(true); mSpinnerPreference.onBindViewHolder(mViewHolder); assertThat(mSpinner.isClickable()).isTrue(); assertThat(mSpinner.isEnabled()).isTrue(); } @Test public void onBindViewHolder_setClickableFalse_isClickableFalse() { mSpinnerPreference.setClickable(false); mSpinnerPreference.onBindViewHolder(mViewHolder); assertThat(mSpinner.isClickable()).isFalse(); assertThat(mSpinner.isEnabled()).isFalse(); } } Loading
packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java +18 −15 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.view.View; import android.widget.AdapterView; import androidx.preference.Preference; import androidx.preference.Preference.OnPreferenceClickListener; import androidx.preference.PreferenceViewHolder; import com.android.settingslib.widget.settingsspinner.SettingsSpinner; Loading @@ -31,12 +32,12 @@ import com.android.settingslib.widget.settingsspinner.SettingsSpinnerAdapter; * This preference uses SettingsSpinner & SettingsSpinnerAdapter which provide default layouts for * both view and drop down view of the Spinner. */ public class SettingsSpinnerPreference extends Preference { public class SettingsSpinnerPreference extends Preference implements OnPreferenceClickListener { private SettingsSpinnerAdapter mAdapter; private AdapterView.OnItemSelectedListener mListener; private int mPosition; //Default 0 for internal shard storage. private boolean mIsClickable = true; private int mPosition; private boolean mShouldPerformClick; /** * Perform inflation from XML and apply a class-specific base style. Loading @@ -51,7 +52,7 @@ public class SettingsSpinnerPreference extends Preference { public SettingsSpinnerPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setLayoutResource(R.layout.settings_spinner_preference); setSelectable(false); setOnPreferenceClickListener(this); } /** Loading @@ -64,7 +65,7 @@ public class SettingsSpinnerPreference extends Preference { public SettingsSpinnerPreference(Context context, AttributeSet attrs) { super(context, attrs); setLayoutResource(R.layout.settings_spinner_preference); setSelectable(false); setOnPreferenceClickListener(this); } /** Loading @@ -76,6 +77,13 @@ public class SettingsSpinnerPreference extends Preference { this(context, null); } @Override public boolean onPreferenceClick(Preference preference) { mShouldPerformClick = true; notifyChanged(); return true; } /** Sets adapter of the spinner. */ public <T extends SettingsSpinnerAdapter> void setAdapter(T adapter) { mAdapter = adapter; Loading @@ -101,24 +109,19 @@ public class SettingsSpinnerPreference extends Preference { notifyChanged(); } /** Set clickable of the spinner. */ public void setClickable(boolean isClickable) { if (mIsClickable == isClickable) { return; } mIsClickable = isClickable; notifyChanged(); } @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); final SettingsSpinner spinner = (SettingsSpinner) holder.findViewById(R.id.spinner); spinner.setEnabled(mIsClickable); spinner.setClickable(mIsClickable); spinner.setAdapter(mAdapter); spinner.setSelection(mPosition); spinner.setOnItemSelectedListener(mOnSelectedListener); if (mShouldPerformClick) { mShouldPerformClick = false; // To show dropdown view. spinner.performClick(); } } private final AdapterView.OnItemSelectedListener mOnSelectedListener = Loading
packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/SettingsSpinnerPreferenceTest.java +0 −20 Original line number Diff line number Diff line Loading @@ -89,24 +89,4 @@ public class SettingsSpinnerPreferenceTest { assertThat(mSpinnerPreference.getSelectedItem()) .isEqualTo(mSpinner.getAdapter().getItem(1)); } @Test public void onBindViewHolder_setClickableTrue_isClickableTrue() { mSpinnerPreference.setClickable(true); mSpinnerPreference.onBindViewHolder(mViewHolder); assertThat(mSpinner.isClickable()).isTrue(); assertThat(mSpinner.isEnabled()).isTrue(); } @Test public void onBindViewHolder_setClickableFalse_isClickableFalse() { mSpinnerPreference.setClickable(false); mSpinnerPreference.onBindViewHolder(mViewHolder); assertThat(mSpinner.isClickable()).isFalse(); assertThat(mSpinner.isEnabled()).isFalse(); } }