# SelectionTracker.SelectionObserver

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/SelectionTracker.java+class:androidx.recyclerview.selection.SelectionTracker.SelectionObserver) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)

*** ** * ** ***


```
public abstract class SelectionTracker.SelectionObserver<K>
```

<br />

*** ** * ** ***

Observer class providing access to information about Selection state changes.

| Parameters |
|---|---|
| `<K>` | Selection key type. @see `https://developer.android.com/reference/androidx/recyclerview/selection/StorageStrategy` for supported types. |

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#SelectionObserver()()` |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onItemStateChanged(K,boolean)(@https://developer.android.com/reference/androidx/annotation/NonNull K key, boolean selected)` Called when the state of an item has been changed. |
| `void` | `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onSelectionChanged()()` Called immediately after completion of any set of changes, excluding those resulting in calls to `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onSelectionRefresh()` and `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onSelectionRestored()`. |
| `void` | `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onSelectionRefresh()()` Called when the underlying data set has changed. |
| `void` | `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onSelectionRestored()()` Called immediately after selection is restored. |

## Public constructors

### SelectionObserver

Added in 1.0.0

```
public SelectionObserver()
```

## Public methods

### onItemStateChanged

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

```
public void onItemStateChanged(@NonNull K key, boolean selected)
```

Called when the state of an item has been changed.

### onSelectionChanged

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

```
public void onSelectionChanged()
```

Called immediately after completion of any set of changes, excluding those resulting in calls to `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onSelectionRefresh()` and `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onSelectionRestored()`.

### onSelectionRefresh

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

```
public void onSelectionRefresh()
```

Called when the underlying data set has changed. After this method is called SelectionTracker will traverse the existing selection, calling `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onItemStateChanged(K,boolean)` for each selected item, and deselecting any items that cannot be selected given the updated data-set (and after consulting SelectionPredicate).

### onSelectionRestored

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

```
public void onSelectionRestored()
```

Called immediately after selection is restored. `https://developer.android.com/reference/androidx/recyclerview/selection/SelectionTracker.SelectionObserver#onItemStateChanged(K,boolean)` will \*not\* be called for individual items in the selection.