# DropDownPreference

Artifact: [androidx.preference:preference](https://developer.android.com/jetpack/androidx/releases/preference) [View Source](https://cs.android.com/search?q=file:androidx/preference/DropDownPreference.java+class:androidx.preference.DropDownPreference) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/preference#1.0.0)

*** ** * ** ***


```
public class DropDownPreference extends ListPreference
```

<br />

|---|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||||
| ↳ | [androidx.preference.Preference](https://developer.android.com/reference/androidx/preference/Preference) ||||
|   | ↳ | [androidx.preference.DialogPreference](https://developer.android.com/reference/androidx/preference/DialogPreference) |||
|   |   | ↳ | [androidx.preference.ListPreference](https://developer.android.com/reference/androidx/preference/ListPreference) ||
|   |   |   | ↳ | [androidx.preference.DropDownPreference](https://developer.android.com/reference/androidx/preference/DropDownPreference) |

*** ** * ** ***

A `https://developer.android.com/reference/androidx/preference/ListPreference` that presents the options in a drop down menu rather than a dialog.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/preference/DropDownPreference#DropDownPreference(android.content.Context)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context)` |
| `https://developer.android.com/reference/androidx/preference/DropDownPreference#DropDownPreference(android.content.Context,android.util.AttributeSet)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/util/AttributeSet.html attrs)` |
| `https://developer.android.com/reference/androidx/preference/DropDownPreference#DropDownPreference(android.content.Context,android.util.AttributeSet,int)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/util/AttributeSet.html attrs, int defStyle )` |
| `https://developer.android.com/reference/androidx/preference/DropDownPreference#DropDownPreference(android.content.Context,android.util.AttributeSet,int,int)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html context, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/util/AttributeSet.html attrs, int defStyleAttr, int defStyleRes )` |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/preference/DropDownPreference#onBindViewHolder(androidx.preference.PreferenceViewHolder)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/preference/PreferenceViewHolder holder)` Binds the created View to the data for this preference. |
| `void` | `https://developer.android.com/reference/androidx/preference/DropDownPreference#setEntries(java.lang.CharSequence[])(@https://developer.android.com/reference/androidx/annotation/NonNull CharSequence[] entries)` Sets the human-readable entries to be shown in the list. |
| `void` | `https://developer.android.com/reference/androidx/preference/DropDownPreference#setValueIndex(int)(int index)` Sets the value to the given index from the entry values. |

| ### Protected methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/widget/ArrayAdapter.html` | `https://developer.android.com/reference/androidx/preference/DropDownPreference#createAdapter()()` By default, this class uses a simple `https://developer.android.com/reference/android/widget/ArrayAdapter.html`. |
| `void` | `https://developer.android.com/reference/androidx/preference/DropDownPreference#notifyChanged()()` Should be called when the data of this `https://developer.android.com/reference/androidx/preference/Preference` has changed. |
| `void` | `https://developer.android.com/reference/androidx/preference/DropDownPreference#onClick()()` Processes a click on the preference. |

| ### Inherited Constants |
|---|
| From [androidx.preference.Preference](https://developer.android.com/reference/androidx/preference/Preference) |---|---| | `static final int` | `https://developer.android.com/reference/androidx/preference/Preference#DEFAULT_ORDER() = 2147483647` Specify for `https://developer.android.com/reference/androidx/preference/Preference#setOrder(int)` if a specific order is not required. | |

| ### Inherited methods |
|---|
| From [java.lang.Comparable](https://developer.android.com/reference/java/lang/Comparable.html) |---|---| | `abstract int` | `https://developer.android.com/reference/java/lang/Comparable.html#compareTo(T)(T p)` | |
| From [androidx.preference.DialogPreference](https://developer.android.com/reference/androidx/preference/DialogPreference) |---|---| | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/graphics/drawable/Drawable.html` | `https://developer.android.com/reference/androidx/preference/DialogPreference#getDialogIcon()()` Returns the icon to be shown on subsequent dialogs. | | `int` | `https://developer.android.com/reference/androidx/preference/DialogPreference#getDialogLayoutResource()()` Returns the layout resource that is used as the content view for subsequent dialogs. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/preference/DialogPreference#getDialogMessage()()` Returns the message to be shown on subsequent dialogs. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/preference/DialogPreference#getDialogTitle()()` Returns the title to be shown on subsequent dialogs. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/preference/DialogPreference#getNegativeButtonText()()` Returns the text of the negative button to be shown on subsequent dialogs. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/preference/DialogPreference#getPositiveButtonText()()` Returns the text of the positive button to be shown on subsequent dialogs. | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setDialogIcon(android.graphics.drawable.Drawable)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/graphics/drawable/Drawable.html dialogIcon)` Sets the icon of the dialog. | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setDialogIcon(int)(int dialogIconRes)` Sets the icon (resource ID) of the dialog. | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setDialogLayoutResource(int)(int dialogLayoutResId)` Sets the layout resource that is inflated as the `https://developer.android.com/reference/android/view/View.html` to be shown as the content view of subsequent dialogs. | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setDialogMessage(java.lang.CharSequence)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html dialogMessage)` Sets the message of the dialog. | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setDialogMessage(int)(int dialogMessageResId)` | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setDialogTitle(java.lang.CharSequence)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html dialogTitle)` Sets the title of the dialog. | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setDialogTitle(int)(int dialogTitleResId)` | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setNegativeButtonText(java.lang.CharSequence)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html negativeButtonText)` Sets the text of the negative button of the dialog. | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setNegativeButtonText(int)(int negativeButtonTextResId)` | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setPositiveButtonText(java.lang.CharSequence)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html positiveButtonText)` Sets the text of the positive button of the dialog. | | `void` | `https://developer.android.com/reference/androidx/preference/DialogPreference#setPositiveButtonText(int)(int positiveButtonTextResId)` | |
| From [androidx.preference.ListPreference](https://developer.android.com/reference/androidx/preference/ListPreference) |---|---| | `int` | `https://developer.android.com/reference/androidx/preference/ListPreference#findIndexOfValue(java.lang.String)(https://developer.android.com/reference/java/lang/String.html value)` Returns the index of the given value (in the entry values array). | | `CharSequence[]` | `https://developer.android.com/reference/androidx/preference/ListPreference#getEntries()()` The list of entries to be shown in the list in subsequent dialogs. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/preference/ListPreference#getEntry()()` Returns the entry corresponding to the current value. | | `CharSequence[]` | `https://developer.android.com/reference/androidx/preference/ListPreference#getEntryValues()()` Returns the array of values to be saved for the preference. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/preference/ListPreference#getSummary()()` Returns the summary of this preference. | | `https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/preference/ListPreference#getValue()()` Returns the value of the key. | | `https://developer.android.com/reference/java/lang/Object.html` | `https://developer.android.com/reference/androidx/preference/ListPreference#onGetDefaultValue(android.content.res.TypedArray,int)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/res/TypedArray.html a, int index)` Called when a preference is being inflated and the default value attribute needs to be read. | | `void` | `https://developer.android.com/reference/androidx/preference/ListPreference#onRestoreInstanceState(android.os.Parcelable)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/os/Parcelable.html state)` Hook allowing a preference to re-apply a representation of its internal state that had previously been generated by `https://developer.android.com/reference/androidx/preference/Preference#onSaveInstanceState()`. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/os/Parcelable.html` | `https://developer.android.com/reference/androidx/preference/ListPreference#onSaveInstanceState()()` Hook allowing a preference to generate a representation of its internal state that can later be used to create a new instance with that same state. | | `void` | `https://developer.android.com/reference/androidx/preference/ListPreference#onSetInitialValue(java.lang.Object)(https://developer.android.com/reference/java/lang/Object.html defaultValue)` Implement this to set the initial value of the preference. | | `void` | `https://developer.android.com/reference/androidx/preference/ListPreference#setEntries(int)(@https://developer.android.com/reference/androidx/annotation/ArrayRes int entriesResId)` | | `void` | `https://developer.android.com/reference/androidx/preference/ListPreference#setEntryValues(java.lang.CharSequence[])(CharSequence[] entryValues)` The array to find the value to save for a preference when an entry from entries is selected. | | `void` | `https://developer.android.com/reference/androidx/preference/ListPreference#setEntryValues(int)(@https://developer.android.com/reference/androidx/annotation/ArrayRes int entryValuesResId)` | | `void` | `https://developer.android.com/reference/androidx/preference/ListPreference#setSummary(java.lang.CharSequence)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html summary)` Sets the summary for this preference with a CharSequence. | | `void` | `https://developer.android.com/reference/androidx/preference/ListPreference#setValue(java.lang.String)(https://developer.android.com/reference/java/lang/String.html value)` Sets the value of the key. | |
| From [androidx.preference.Preference](https://developer.android.com/reference/androidx/preference/Preference) |---|---| | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#callChangeListener(java.lang.Object)(https://developer.android.com/reference/java/lang/Object.html newValue)` Call this method after the user changes the preference, but before the internal state is set. | | `int` | `https://developer.android.com/reference/androidx/preference/Preference#compareTo(androidx.preference.Preference)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/preference/Preference another)` Compares preference objects based on order (if set), otherwise alphabetically on the titles. | | `@https://developer.android.com/reference/androidx/annotation/Nullable T` | `<T extends https://developer.android.com/reference/androidx/preference/Preference> https://developer.android.com/reference/androidx/preference/Preference#findPreferenceInHierarchy(java.lang.String)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html key)` Finds a preference in the entire hierarchy (above or below this preference) with the given key. | | `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/content/Context.html` | `https://developer.android.com/reference/androidx/preference/Preference#getContext()()` Returns the `https://developer.android.com/reference/android/content/Context.html` of this preference. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/preference/Preference#getDependency()()` Returns the key of the dependency on this preference. | | `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/androidx/preference/Preference#getExtras()()` Return the extras Bundle object associated with this preference, creating a new Bundle if there currently isn't one. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/preference/Preference#getFragment()()` Return the fragment class name associated with this preference. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/graphics/drawable/Drawable.html` | `https://developer.android.com/reference/androidx/preference/Preference#getIcon()()` Returns the icon of this preference. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/content/Intent.html` | `https://developer.android.com/reference/androidx/preference/Preference#getIntent()()` Return the `https://developer.android.com/reference/android/content/Intent.html` associated with this preference. | | `https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/preference/Preference#getKey()()` Gets the key for this preference, which is also the key used for storing values into `https://developer.android.com/reference/android/content/SharedPreferences.html` or `https://developer.android.com/reference/androidx/preference/PreferenceDataStore`. | | `final int` | `https://developer.android.com/reference/androidx/preference/Preference#getLayoutResource()()` Gets the layout resource that will be shown as the `https://developer.android.com/reference/android/view/View.html` for this preference. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/Preference.OnPreferenceChangeListener` | `https://developer.android.com/reference/androidx/preference/Preference#getOnPreferenceChangeListener()()` Returns the callback to be invoked when this preference is changed by the user (but before the internal state has been updated). | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/Preference.OnPreferenceClickListener` | `https://developer.android.com/reference/androidx/preference/Preference#getOnPreferenceClickListener()()` Returns the callback to be invoked when this preference is clicked. | | `int` | `https://developer.android.com/reference/androidx/preference/Preference#getOrder()()` Gets the order of this preference with respect to other preference objects on the same level. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/PreferenceGroup` | `https://developer.android.com/reference/androidx/preference/Preference#getParent()()` Returns the `https://developer.android.com/reference/androidx/preference/PreferenceGroup` which is this preference assigned to or `null` if this preference is not assigned to any group or is a root preference. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#getPersistedBoolean(boolean)(boolean defaultReturnValue)` Attempts to get a persisted `https://developer.android.com/reference/java/lang/Boolean.html` if this preference is persistent. | | `float` | `https://developer.android.com/reference/androidx/preference/Preference#getPersistedFloat(float)(float defaultReturnValue)` Attempts to get a persisted `https://developer.android.com/reference/java/lang/Float.html` if this preference is persistent. | | `int` | `https://developer.android.com/reference/androidx/preference/Preference#getPersistedInt(int)(int defaultReturnValue)` Attempts to get a persisted `https://developer.android.com/reference/java/lang/Integer.html` if this preference is persistent. | | `long` | `https://developer.android.com/reference/androidx/preference/Preference#getPersistedLong(long)(long defaultReturnValue)` Attempts to get a persisted `https://developer.android.com/reference/java/lang/Long.html` if this preference is persistent. | | `https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/preference/Preference#getPersistedString(java.lang.String)(https://developer.android.com/reference/java/lang/String.html defaultReturnValue)` Attempts to get a persisted set of Strings if this preference is persistent. | | `https://developer.android.com/reference/java/util/Set.html<https://developer.android.com/reference/java/lang/String.html>` | `https://developer.android.com/reference/androidx/preference/Preference#getPersistedStringSet(java.util.Set<java.lang.String>)(https://developer.android.com/reference/java/util/Set.html<https://developer.android.com/reference/java/lang/String.html> defaultReturnValue)` Attempts to get a persisted set of Strings if this preference is persistent. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/PreferenceDataStore` | `https://developer.android.com/reference/androidx/preference/Preference#getPreferenceDataStore()()` Returns `https://developer.android.com/reference/androidx/preference/PreferenceDataStore` used by this preference. | | `https://developer.android.com/reference/androidx/preference/PreferenceManager` | `https://developer.android.com/reference/androidx/preference/Preference#getPreferenceManager()()` Gets the `https://developer.android.com/reference/androidx/preference/PreferenceManager` that manages this preference object's tree. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/content/SharedPreferences.html` | `https://developer.android.com/reference/androidx/preference/Preference#getSharedPreferences()()` Returns the `https://developer.android.com/reference/android/content/SharedPreferences.html` where this preference can read its value(s). | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#getShouldDisableView()()` Checks whether this preference should disable its view when it's action is disabled. | | `final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/Preference.SummaryProvider` | `https://developer.android.com/reference/androidx/preference/Preference#getSummaryProvider()()` Returns the `https://developer.android.com/reference/androidx/preference/Preference.SummaryProvider` used to configure the summary of this preference. | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html` | `https://developer.android.com/reference/androidx/preference/Preference#getTitle()()` Returns the title of this preference. | | `final int` | `https://developer.android.com/reference/androidx/preference/Preference#getWidgetLayoutResource()()` Gets the layout resource for the controllable widget portion of this preference. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#hasKey()()` Checks whether this preference has a valid key. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#isCopyingEnabled()()` Returns whether the summary of this preference can be copied to the clipboard by long pressing on the preference. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#isEnabled()()` Checks whether this preference should be enabled in the list. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#isIconSpaceReserved()()` Returns whether the space of this preference icon view is reserved. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#isPersistent()()` Checks whether this preference is persistent. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#isSelectable()()` Checks whether this preference should be selectable in the list. | | `final boolean` | `https://developer.android.com/reference/androidx/preference/Preference#isShown()()` Checks whether this preference is shown to the user in the hierarchy. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#isSingleLineTitle()()` Gets whether the title of this preference is constrained to a single line. | | `final boolean` | `https://developer.android.com/reference/androidx/preference/Preference#isVisible()()` Checks whether this preference should be visible to the user. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#notifyDependencyChange(boolean)(boolean disableDependents)` Notifies any listening dependents of a change that affects the dependency. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#notifyHierarchyChanged()()` Should be called when a preference has been added/removed from this group, or the ordering should be re-evaluated. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#onAttached()()` Called when the preference hierarchy has been attached to the list of preferences. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#onAttachedToHierarchy(androidx.preference.PreferenceManager)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/preference/PreferenceManager preferenceManager)` Called when this preference has been attached to a preference hierarchy. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#onDependencyChanged(androidx.preference.Preference,boolean)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/preference/Preference dependency, boolean disableDependent )` Called when the dependency changes. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#onDetached()()` Called when the preference hierarchy has been detached from the list of preferences. | | `void` | `@https://developer.android.com/reference/androidx/annotation/CallSuper [onInitializeAccessibilityNodeInfo](https://developer.android.com/reference/androidx/preference/Preference#onInitializeAccessibilityNodeInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat))(https://developer.android.com/reference/androidx/core/view/accessibility/AccessibilityNodeInfoCompat info)` **This method is deprecated.** Preferences aren't views. <br /> | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#onParentChanged(androidx.preference.Preference,boolean)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/preference/Preference parent, boolean disableChild)` Called when the implicit parent dependency changes. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#onPrepareForRemoval()()` Called when this preference is being removed from the hierarchy. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#onSetInitialValue(java.lang.Object)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html defaultValue)` Implement this to set the initial value of the preference. | | `void` | `[onSetInitialValue](https://developer.android.com/reference/androidx/preference/Preference#onSetInitialValue(boolean,java.lang.Object))(boolean restorePersistedValue, https://developer.android.com/reference/java/lang/Object.html defaultValue)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/preference/Preference#onSetInitialValue(java.lang.Object)` instead. <br /> | | `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/androidx/preference/Preference#peekExtras()()` Return the extras Bundle object associated with this preference, returning `null` if there is not currently one. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#persistBoolean(boolean)(boolean value)` Attempts to persist a `https://developer.android.com/reference/java/lang/Boolean.html` if this preference is persistent. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#persistFloat(float)(float value)` Attempts to persist a `https://developer.android.com/reference/java/lang/Float.html` if this preference is persistent. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#persistInt(int)(int value)` Attempts to persist an `https://developer.android.com/reference/java/lang/Integer.html` if this preference is persistent. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#persistLong(long)(long value)` Attempts to persist a `https://developer.android.com/reference/java/lang/Long.html` if this preference is persistent. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#persistString(java.lang.String)(https://developer.android.com/reference/java/lang/String.html value)` Attempts to persist a `https://developer.android.com/reference/java/lang/String.html` if this preference is persistent. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#persistStringSet(java.util.Set<java.lang.String>)(https://developer.android.com/reference/java/util/Set.html<https://developer.android.com/reference/java/lang/String.html> values)` Attempts to persist a set of Strings if this preference is persistent. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#restoreHierarchyState(android.os.Bundle)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/os/Bundle.html container)` Restore this preference hierarchy's previously saved state from the given container. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#saveHierarchyState(android.os.Bundle)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/os/Bundle.html container)` Store this preference hierarchy's frozen state into the given container. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setCopyingEnabled(boolean)(boolean enabled)` Sets whether the summary of this preference can be copied to the clipboard by long pressing on the preference. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setDefaultValue(java.lang.Object)(https://developer.android.com/reference/java/lang/Object.html defaultValue)` Sets the default value for this preference, which will be set either if persistence is off or persistence is on and the preference is not found in the persistent storage. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setDependency(java.lang.String)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html dependencyKey)` Sets the key of a preference that this preference will depend on. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setEnabled(boolean)(boolean enabled)` Sets whether this preference is enabled. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setFragment(java.lang.String)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html fragment)` Sets the class name of a fragment to be shown when this preference is clicked. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setIcon(android.graphics.drawable.Drawable)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/graphics/drawable/Drawable.html icon)` Sets the icon for this preference with a Drawable. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setIcon(int)(int iconResId)` Sets the icon for this preference with a resource ID. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setIconSpaceReserved(boolean)(boolean iconSpaceReserved)` Sets whether to reserve the space of this preference icon view when no icon is provided. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setIntent(android.content.Intent)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/content/Intent.html intent)` Sets an `https://developer.android.com/reference/android/content/Intent.html` to be used for `https://developer.android.com/reference/android/content/Context.html#startActivity(android.content.Intent)` when this preference is clicked. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setKey(java.lang.String)(https://developer.android.com/reference/java/lang/String.html key)` Sets the key for this preference, which is used as a key to the `https://developer.android.com/reference/android/content/SharedPreferences.html` or `https://developer.android.com/reference/androidx/preference/PreferenceDataStore`. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setLayoutResource(int)(int layoutResId)` Sets the layout resource that is inflated as the `https://developer.android.com/reference/android/view/View.html` to be shown for this preference. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setOnPreferenceChangeListener(androidx.preference.Preference.OnPreferenceChangeListener)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/Preference.OnPreferenceChangeListener onPreferenceChangeListener )` Sets the callback to be invoked when this preference is changed by the user (but before the internal state has been updated). | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setOnPreferenceClickListener(androidx.preference.Preference.OnPreferenceClickListener)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/Preference.OnPreferenceClickListener onPreferenceClickListener )` Sets the callback to be invoked when this preference is clicked. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setOrder(int)(int order)` Sets the order of this preference with respect to other preference objects on the same level. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setPersistent(boolean)(boolean persistent)` Sets whether this preference is persistent. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setPreferenceDataStore(androidx.preference.PreferenceDataStore)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/PreferenceDataStore dataStore)` Sets a `https://developer.android.com/reference/androidx/preference/PreferenceDataStore` to be used by this preference instead of using `https://developer.android.com/reference/android/content/SharedPreferences.html`. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setSelectable(boolean)(boolean selectable)` Sets whether this preference is selectable. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setShouldDisableView(boolean)(boolean shouldDisableView)` Sets whether this preference should disable its view when it gets disabled. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setSingleLineTitle(boolean)(boolean singleLineTitle)` Sets whether to constrain the title of this preference to a single line instead of letting it wrap onto multiple lines. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setSummary(int)(int summaryResId)` Sets the summary for this preference with a resource ID. | | `final void` | `https://developer.android.com/reference/androidx/preference/Preference#setSummaryProvider(androidx.preference.Preference.SummaryProvider)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/preference/Preference.SummaryProvider summaryProvider)` Set a `https://developer.android.com/reference/androidx/preference/Preference.SummaryProvider` that will be invoked whenever the summary of this preference is requested. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setTitle(java.lang.CharSequence)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/CharSequence.html title)` Sets the title for this preference with a CharSequence. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setTitle(int)(int titleResId)` Sets the title for this preference with a resource ID. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setViewId(int)(int viewId)` Set the ID that will be assigned to the overall View representing this preference, once bound. | | `final void` | `https://developer.android.com/reference/androidx/preference/Preference#setVisible(boolean)(boolean visible)` Sets whether this preference should be visible to the user. | | `void` | `https://developer.android.com/reference/androidx/preference/Preference#setWidgetLayoutResource(int)(int widgetLayoutResId)` Sets the layout for the controllable widget portion of this preference. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#shouldDisableDependents()()` Checks whether this preference's dependents should currently be disabled. | | `boolean` | `https://developer.android.com/reference/androidx/preference/Preference#shouldPersist()()` Checks whether, at the given time this method is called, this preference should store/restore its value(s) into the `https://developer.android.com/reference/android/content/SharedPreferences.html` or into `https://developer.android.com/reference/androidx/preference/PreferenceDataStore` if assigned. | | `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/preference/Preference#toString()()` | |

## Public constructors

### DropDownPreference

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/preference#1.0.0)

```
public DropDownPreference(@NonNull Context context)
```

### DropDownPreference

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/preference#1.0.0)

```
public DropDownPreference(@NonNull Context context, @Nullable AttributeSet attrs)
```

### DropDownPreference

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/preference#1.0.0)

```
public DropDownPreference(
    @NonNull Context context,
    @Nullable AttributeSet attrs,
    int defStyle
)
```

### DropDownPreference

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/preference#1.0.0)

```
public DropDownPreference(
    @NonNull Context context,
    @Nullable AttributeSet attrs,
    int defStyleAttr,
    int defStyleRes
)
```

## Public methods

### onBindViewHolder

```
public void onBindViewHolder(@NonNull PreferenceViewHolder holder)
```

Binds the created View to the data for this preference.

This is a good place to grab references to custom Views in the layout and set properties on them.

Make sure to call through to the superclass's implementation.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/preference/PreferenceViewHolder holder` | The ViewHolder that provides references to the views to fill in. These views will be recycled, so you should not hold a reference to them after this method returns. |

### setEntries

```
public void setEntries(@NonNull CharSequence[] entries)
```

Sets the human-readable entries to be shown in the list. This will be shown in subsequent dialogs.

Each entry must have a corresponding index in `https://developer.android.com/reference/androidx/preference/ListPreference#setEntryValues(java.lang.CharSequence[])`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull CharSequence[] entries` | The entries |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/preference/ListPreference#setEntryValues(java.lang.CharSequence[])` |   |

### setValueIndex

```
public void setValueIndex(int index)
```

Sets the value to the given index from the entry values.

| Parameters |
|---|---|
| `int index` | The index of the value to set |

## Protected methods

### createAdapter

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/preference#1.0.0)

```
protected @NonNull ArrayAdapter createAdapter()
```

By default, this class uses a simple `https://developer.android.com/reference/android/widget/ArrayAdapter.html`. But if you need a more complicated adapter, this method can be overridden to create a custom one.

Note: This method is called from the constructor. Overridden methods will get called before any subclass initialization.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/widget/ArrayAdapter.html` | The custom `https://developer.android.com/reference/android/widget/ArrayAdapter.html` that needs to be used with this class |

### notifyChanged

```
protected void notifyChanged()
```

Should be called when the data of this `https://developer.android.com/reference/androidx/preference/Preference` has changed.

### onClick

```
protected void onClick()
```

Processes a click on the preference. This includes saving the value to the `https://developer.android.com/reference/android/content/SharedPreferences.html`. However, the overridden method should call `https://developer.android.com/reference/androidx/preference/Preference#callChangeListener(java.lang.Object)` to make sure the client wants to update the preference's state with the new value.