# StableIdKeyProvider

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

*** ** * ** ***


```
public final class StableIdKeyProvider extends ItemKeyProvider<Long>
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.recyclerview.selection.ItemKeyProvider](https://developer.android.com/reference/androidx/recyclerview/selection/ItemKeyProvider)\<[Long](https://developer.android.com/reference/java/lang/Long.html)\> ||
|   | ↳ | [androidx.recyclerview.selection.StableIdKeyProvider](https://developer.android.com/reference/androidx/recyclerview/selection/StableIdKeyProvider) |

*** ** * ** ***

An `https://developer.android.com/reference/androidx/recyclerview/selection/ItemKeyProvider` that provides stable ids by way of cached `https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.Adapter` stable ids. Items enter the cache as they are laid out by RecyclerView, and are removed from the cache as they are recycled.

There are trade-offs with this implementation as it necessarily auto-boxes `long` stable id values into `Long` values for use as selection keys. The core Selection API uses a parameterized key type to permit other keys (such as Strings or URIs).

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/recyclerview/selection/StableIdKeyProvider#StableIdKeyProvider(androidx.recyclerview.widget.RecyclerView)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView recyclerView)` Creates a new key provider that uses cached `long` stable ids associated with the RecyclerView items. |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Long.html` | `https://developer.android.com/reference/androidx/recyclerview/selection/StableIdKeyProvider#getKey(int)(int position)` |
| `int` | `https://developer.android.com/reference/androidx/recyclerview/selection/StableIdKeyProvider#getPosition(java.lang.Long)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Long.html key)` |

### Inherited Constants

From [androidx.recyclerview.selection.ItemKeyProvider](https://developer.android.com/reference/androidx/recyclerview/selection/ItemKeyProvider) `static final int` `https://developer.android.com/reference/androidx/recyclerview/selection/ItemKeyProvider#SCOPE_CACHED() = 1`

Provides access to cached data based for items that were recently bound in the view.
`static final int` `https://developer.android.com/reference/androidx/recyclerview/selection/ItemKeyProvider#SCOPE_MAPPED() = 0`

Provides access to all data, regardless of whether it is bound to a view or not.

## Public constructors

### StableIdKeyProvider

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

```
public StableIdKeyProvider(@NonNull RecyclerView recyclerView)
```

Creates a new key provider that uses cached `long` stable ids associated with the RecyclerView items.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView recyclerView` | the owner RecyclerView |

## Public methods

### getKey

Added in [1.2.0-alpha02](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.2.0-alpha02)

```
public @Nullable Long getKey(int position)
```

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Long.html` | The selection key at the given adapter position, or null. |

### getPosition

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

```
public int getPosition(@NonNull Long key)
```

| Returns |
|---|---|
| `int` | the position corresponding to the selection key, or RecyclerView.NO_POSITION. |