Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/widget/Adapter#constants) \| [Methods](https://developer.android.com/reference/android/widget/Adapter#pubmethods)

# Adapter

*** ** * ** ***


`
public


interface
Adapter
`


`


`

|---|
| android.widget.Adapter |

|---|
| Known indirect subclasses [ArrayAdapter](https://developer.android.com/reference/android/widget/ArrayAdapter)\<T\>, [BaseAdapter](https://developer.android.com/reference/android/widget/BaseAdapter), [CursorAdapter](https://developer.android.com/reference/android/widget/CursorAdapter), [HeaderViewListAdapter](https://developer.android.com/reference/android/widget/HeaderViewListAdapter), [ListAdapter](https://developer.android.com/reference/android/widget/ListAdapter), [ResourceCursorAdapter](https://developer.android.com/reference/android/widget/ResourceCursorAdapter), [SimpleAdapter](https://developer.android.com/reference/android/widget/SimpleAdapter), [SimpleCursorAdapter](https://developer.android.com/reference/android/widget/SimpleCursorAdapter), [SpinnerAdapter](https://developer.android.com/reference/android/widget/SpinnerAdapter), [ThemedSpinnerAdapter](https://developer.android.com/reference/android/widget/ThemedSpinnerAdapter), [WrapperListAdapter](https://developer.android.com/reference/android/widget/WrapperListAdapter) |---|---| | [ArrayAdapter](https://developer.android.com/reference/android/widget/ArrayAdapter)\<T\> | You can use this adapter to provide views for an `https://developer.android.com/reference/android/widget/AdapterView`, Returns a view for each object in a collection of data objects you provide, and can be used with list-based user interface widgets such as `https://developer.android.com/reference/android/widget/ListView` or `https://developer.android.com/reference/android/widget/Spinner`. | | [BaseAdapter](https://developer.android.com/reference/android/widget/BaseAdapter) | Common base class of common implementation for an `https://developer.android.com/reference/android/widget/Adapter` that can be used in both `https://developer.android.com/reference/android/widget/ListView` (by implementing the specialized `https://developer.android.com/reference/android/widget/ListAdapter` interface) and `https://developer.android.com/reference/android/widget/Spinner` (by implementing the specialized `https://developer.android.com/reference/android/widget/SpinnerAdapter` interface). | | [CursorAdapter](https://developer.android.com/reference/android/widget/CursorAdapter) | Adapter that exposes data from a `https://developer.android.com/reference/android/database/Cursor` to a `https://developer.android.com/reference/android/widget/ListView` widget. | | [HeaderViewListAdapter](https://developer.android.com/reference/android/widget/HeaderViewListAdapter) | ListAdapter used when a ListView has header views. | | [ListAdapter](https://developer.android.com/reference/android/widget/ListAdapter) | Extended `https://developer.android.com/reference/android/widget/Adapter` that is the bridge between a `https://developer.android.com/reference/android/widget/ListView` and the data that backs the list. | | [ResourceCursorAdapter](https://developer.android.com/reference/android/widget/ResourceCursorAdapter) | An easy adapter that creates views defined in an XML file. | | [SimpleAdapter](https://developer.android.com/reference/android/widget/SimpleAdapter) | An easy adapter to map static data to views defined in an XML file. | | [SimpleCursorAdapter](https://developer.android.com/reference/android/widget/SimpleCursorAdapter) | An easy adapter to map columns from a cursor to TextViews or ImageViews defined in an XML file. | | [SpinnerAdapter](https://developer.android.com/reference/android/widget/SpinnerAdapter) | Extended `https://developer.android.com/reference/android/widget/Adapter` that is the bridge between a `https://developer.android.com/reference/android/widget/Spinner` and its data. | | [ThemedSpinnerAdapter](https://developer.android.com/reference/android/widget/ThemedSpinnerAdapter) | An extension of SpinnerAdapter that is capable of inflating drop-down views against a different theme than normal views. | | [WrapperListAdapter](https://developer.android.com/reference/android/widget/WrapperListAdapter) | List adapter that wraps another list adapter. | |

<br />

*** ** * ** ***

An Adapter object acts as a bridge between an `https://developer.android.com/reference/android/widget/AdapterView` and the
underlying data for that view. The Adapter provides access to the data items.
The Adapter is also responsible for making a `https://developer.android.com/reference/android/view/View` for
each item in the data set.
**See also:**

- `https://developer.android.com/reference/android/widget/ArrayAdapter`
- `https://developer.android.com/reference/android/widget/CursorAdapter`
- `https://developer.android.com/reference/android/widget/SimpleCursorAdapter`

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/widget/Adapter#IGNORE_ITEM_VIEW_TYPE` An item view type that causes the `https://developer.android.com/reference/android/widget/AdapterView` to ignore the item view. |
| `int` | `https://developer.android.com/reference/android/widget/Adapter#NO_SELECTION` |

| ### Public methods ||
|---|---|
| ` default https://developer.android.com/reference/java/lang/CharSequence` | ` https://developer.android.com/reference/android/widget/Adapter#getAutofillOptions()() ` Gets a string representation of the adapter data that can help `https://developer.android.com/reference/android/service/autofill/AutofillService` autofill the view backed by the adapter. |
| ` abstract int` | ` https://developer.android.com/reference/android/widget/Adapter#getCount()() ` How many items are in the data set represented by this Adapter. |
| ` abstract https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/android/widget/Adapter#getItem(int)(int position) ` Get the data item associated with the specified position in the data set. |
| ` abstract long` | ` https://developer.android.com/reference/android/widget/Adapter#getItemId(int)(int position) ` Get the row id associated with the specified position in the list. |
| ` abstract int` | ` https://developer.android.com/reference/android/widget/Adapter#getItemViewType(int)(int position) ` Get the type of View that will be created by `https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)` for the specified item. |
| ` abstract https://developer.android.com/reference/android/view/View` | ` https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)(int position, https://developer.android.com/reference/android/view/View convertView, https://developer.android.com/reference/android/view/ViewGroup parent) ` Get a View that displays the data at the specified position in the data set. |
| ` abstract int` | ` https://developer.android.com/reference/android/widget/Adapter#getViewTypeCount()() ` <br /> Returns the number of types of Views that will be created by `https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)`. |
| ` abstract boolean` | ` https://developer.android.com/reference/android/widget/Adapter#hasStableIds()() ` Indicates whether the item ids are stable across changes to the underlying data. |
| ` abstract boolean` | ` https://developer.android.com/reference/android/widget/Adapter#isEmpty()() ` |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/Adapter#registerDataSetObserver(android.database.DataSetObserver)(https://developer.android.com/reference/android/database/DataSetObserver observer) ` Register an observer that is called when changes happen to the data used by this adapter. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/Adapter#unregisterDataSetObserver(android.database.DataSetObserver)(https://developer.android.com/reference/android/database/DataSetObserver observer) ` Unregister an observer that has previously been registered with this adapter via `https://developer.android.com/reference/android/widget/Adapter#registerDataSetObserver(android.database.DataSetObserver)`. |

## Constants

### IGNORE_ITEM_VIEW_TYPE

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int IGNORE_ITEM_VIEW_TYPE
```

An item view type that causes the `https://developer.android.com/reference/android/widget/AdapterView` to ignore the item
view. For example, this can be used if the client does not want a
particular view to be given for conversion in
`https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)`.

<br />

**See also:**

- `https://developer.android.com/reference/android/widget/Adapter#getItemViewType(int)`
- `https://developer.android.com/reference/android/widget/Adapter#getViewTypeCount()`

Constant Value:

-1
(0xffffffff)


### NO_SELECTION

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int NO_SELECTION
```

<br />

<br />

Constant Value:

-2147483648
(0x80000000)


## Public methods

### getAutofillOptions

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public CharSequence[] getAutofillOptions ()
```

Gets a string representation of the adapter data that can help
`https://developer.android.com/reference/android/service/autofill/AutofillService` autofill the view backed by the adapter.


It should only be set (i.e., non-`null` if the values do not represent PII
(Personally Identifiable Information - sensitive data such as email addresses,
credit card numbers, passwords, etc...). For
example, it's ok to return a list of month names, but not a list of usernames. A good rule of
thumb is that if the adapter data comes from static resources, such data is not PII - see
`https://developer.android.com/reference/android/view/ViewStructure#setDataIsSensitive(boolean)` for more info.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/CharSequence` | `null` by default, unless implementations override it. <br /> |

### getCount

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract int getCount ()
```

How many items are in the data set represented by this Adapter.

<br />

| Returns ||
|---|---|
| `int` | Count of items. <br /> |

### getItem

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Object getItem (int position)
```

Get the data item associated with the specified position in the data set.

<br />

| Parameters ||
|---|---|
| `position` | `int`: Position of the item whose data we want within the adapter's data set. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/Object` | The data at the specified position. <br /> |

### getItemId

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract long getItemId (int position)
```

Get the row id associated with the specified position in the list.

<br />

| Parameters ||
|---|---|
| `position` | `int`: The position of the item within the adapter's data set whose row id we want. <br /> |

| Returns ||
|---|---|
| `long` | The id of the item at the specified position. <br /> |

### getItemViewType

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract int getItemViewType (int position)
```

Get the type of View that will be created by `https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)` for the specified item.

<br />

| Parameters ||
|---|---|
| `position` | `int`: The position of the item within the adapter's data set whose view type we want. <br /> |

| Returns ||
|---|---|
| `int` | An integer representing the type of View. Two views should share the same type if one can be converted to the other in `https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)`. Note: Integers must be in the range 0 to `https://developer.android.com/reference/android/widget/Adapter#getViewTypeCount()` - 1. `https://developer.android.com/reference/android/widget/Adapter#IGNORE_ITEM_VIEW_TYPE` can also be returned. <br /> |

**See also:**

- `https://developer.android.com/reference/android/widget/Adapter#IGNORE_ITEM_VIEW_TYPE`

### getView

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract View getView (int position, 
                View convertView, 
                ViewGroup parent)
```

Get a View that displays the data at the specified position in the data set. You can either
create a View manually or inflate it from an XML layout file. When the View is inflated, the
parent View (GridView, ListView...) will apply default layout parameters unless you use
`https://developer.android.com/reference/android/view/LayoutInflater#inflate(int,%20android.view.ViewGroup,%20boolean)`
to specify a root view and to prevent attachment to the root.

<br />

| Parameters ||
|---|---|
| `position` | `int`: The position of the item within the adapter's data set of the item whose view we want. <br /> |
| `convertView` | `View`: The old view to reuse, if possible. Note: You should check that this view is non-null and of an appropriate type before using. If it is not possible to convert this view to display the correct data, this method can create a new view. Heterogeneous lists can specify their number of view types, so that this View is always of the right type (see `https://developer.android.com/reference/android/widget/Adapter#getViewTypeCount()` and `https://developer.android.com/reference/android/widget/Adapter#getItemViewType(int)`). <br /> |
| `parent` | `ViewGroup`: The parent that this view will eventually be attached to <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/view/View` | A View corresponding to the data at the specified position. <br /> |

### getViewTypeCount

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract int getViewTypeCount ()
```

<br />


Returns the number of types of Views that will be created by
`https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)`. Each type represents a set of views that can be
converted in `https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)`. If the adapter always returns the same
type of View for all items, this method should return 1.


This method will only be called when the adapter is set on the `https://developer.android.com/reference/android/widget/AdapterView`.

<br />

<br />

| Returns ||
|---|---|
| `int` | The number of types of Views that will be created by this adapter <br /> |

### hasStableIds

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract boolean hasStableIds ()
```

Indicates whether the item ids are stable across changes to the
underlying data.

<br />

| Returns ||
|---|---|
| `boolean` | True if the same id always refers to the same object. <br /> |

### isEmpty

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract boolean isEmpty ()
```

<br />

<br />

| Returns ||
|---|---|
| `boolean` | true if this adapter doesn't contain any data. This is used to determine whether the empty view should be displayed. A typical implementation will return getCount() == 0 but since getCount() includes the headers and footers, specialized adapters might want a different behavior. <br /> |

### registerDataSetObserver

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void registerDataSetObserver (DataSetObserver observer)
```

Register an observer that is called when changes happen to the data used by this adapter.

<br />

| Parameters ||
|---|---|
| `observer` | `DataSetObserver`: the object that gets notified when the data set changes. <br /> |

### unregisterDataSetObserver

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void unregisterDataSetObserver (DataSetObserver observer)
```

Unregister an observer that has previously been registered with this
adapter via `https://developer.android.com/reference/android/widget/Adapter#registerDataSetObserver(android.database.DataSetObserver)`.

<br />

| Parameters ||
|---|---|
| `observer` | `DataSetObserver`: the object to unregister. <br /> |