Merge "Add SettingsSpinnerPreference#setClickable" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-12 03:10:53 +00:00
committed by Android (Google) Code Review
2 changed files with 34 additions and 0 deletions

View File

@@ -36,6 +36,7 @@ public class SettingsSpinnerPreference extends Preference {
private SettingsSpinnerAdapter mAdapter;
private AdapterView.OnItemSelectedListener mListener;
private int mPosition; //Default 0 for internal shard storage.
private boolean mIsClickable = true;
/**
* Perform inflation from XML and apply a class-specific base style.
@@ -50,6 +51,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);
}
/**
@@ -62,6 +64,7 @@ public class SettingsSpinnerPreference extends Preference {
public SettingsSpinnerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setLayoutResource(R.layout.settings_spinner_preference);
setSelectable(false);
}
/**
@@ -98,10 +101,21 @@ 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);

View File

@@ -89,4 +89,24 @@ 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();
}
}