# FocusDelegate

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

*** ** * ** ***


```
public abstract class FocusDelegate<K>
```

<br />

*** ** * ** ***

Override methods in this class to provide application specific behaviors related to focusing item.

| 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/FocusDelegate#FocusDelegate()()` |

| ### Public methods |
|---|---|
| `abstract void` | `https://developer.android.com/reference/androidx/recyclerview/selection/FocusDelegate#clearFocus()()` If the environment supports focus and something is focused, unfocus it. |
| `abstract void` | `https://developer.android.com/reference/androidx/recyclerview/selection/FocusDelegate#focusItem(androidx.recyclerview.selection.ItemDetailsLookup.ItemDetails<K>)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/recyclerview/selection/ItemDetailsLookup.ItemDetails<K> item)` If environment supports focus, focus `item`. |
| `abstract int` | `https://developer.android.com/reference/androidx/recyclerview/selection/FocusDelegate#getFocusedPosition()()` Returns the position of the currently focused item, or `https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView#NO_POSITION()` if nothing is focused. |
| `abstract boolean` | `https://developer.android.com/reference/androidx/recyclerview/selection/FocusDelegate#hasFocusedItem()()` |

## Public constructors

### FocusDelegate

Added in 1.0.0

```
public FocusDelegate()
```

## Public methods

### clearFocus

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

```
public abstract void clearFocus()
```

If the environment supports focus and something is focused, unfocus it.

### focusItem

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

```
public abstract void focusItem(@NonNull ItemDetailsLookup.ItemDetails<K> item)
```

If environment supports focus, focus `item`.

### getFocusedPosition

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

```
public abstract int getFocusedPosition()
```

Returns the position of the currently focused item, or `https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView#NO_POSITION()` if nothing is focused.

You must implement this feature if you intend your app to work well with mouse and keyboard. Selection ranges are inferred from focused item when there is no explicit last-selected item.

You can manage and advance focus using keyboard arrows, reflecting this state visibly in the view item. Use can then press shift, then click another item with their mouse to select all items between the focused item and the clicked item.

| Returns |
|---|---|
| `int` | the position of the currently focused item, or `RecyclerView#NO_POSITION` if none. |

### hasFocusedItem

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

```
public abstract boolean hasFocusedItem()
```

| Returns |
|---|---|
| `boolean` | true if there is a focused item. |