# VerticalGridPresenter

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

*** ** * ** ***

<br />

```
public class VerticalGridPresenter extends Presenter
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.leanback.widget.Presenter](https://developer.android.com/reference/androidx/leanback/widget/Presenter) ||
|   | ↳ | [androidx.leanback.widget.VerticalGridPresenter](https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter) |

*** ** * ** ***

A presenter that renders objects in a `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridView`.

## Summary

| ### Nested types |
|---|
| `public class https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder extends https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder` ViewHolder for the VerticalGridPresenter. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#VerticalGridPresenter()()` Constructs a VerticalGridPresenter with defaults. |
| `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#VerticalGridPresenter(int)(int focusZoomFactor)` Constructs a VerticalGridPresenter with the given parameters. |
| `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#VerticalGridPresenter(int,boolean)(int focusZoomFactor, boolean useFocusDimmer)` Constructs a VerticalGridPresenter with the given parameters. |

| ### Public methods |
|---|---|
| `final boolean` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#areChildRoundedCornersEnabled()()` Returns true if rounded corners are enabled for children of this row. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#enableChildRoundedCorners(boolean)(boolean enable)` Enables or disabled rounded corners on children of this row. |
| `final int` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#getFocusZoomFactor()()` Returns the zoom factor used for focus highlighting. |
| `final boolean` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#getKeepChildForeground()()` Returns true if keeps foreground of child of this grid, the foreground will not be used for overlay color. |
| `int` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#getNumberOfColumns()()` Returns the number of columns in the vertical grid. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/widget/OnItemViewClickedListener` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#getOnItemViewClickedListener()()` Returns the item clicked listener. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/widget/OnItemViewSelectedListener` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#getOnItemViewSelectedListener()()` Returns the item selected listener. |
| `final boolean` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#getShadowEnabled()()` Returns true if child shadow is enabled. |
| `final boolean` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#isFocusDimmerUsed()()` Returns true if the focus dimmer is used for focus highlighting; false otherwise. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#isUsingDefaultShadow()()` Default implementation returns true if SDK version \>= 21, shadow (either static or z-order based) will be applied to each individual child of `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridView`. |
| `boolean` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#isUsingZOrder(android.content.Context)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context)` Returns true if SDK \>= L, where Z shadow is enabled so that Z order is enabled on each child of vertical grid. |
| `void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder,java.lang.Object)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder viewHolder, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html item )` Binds a `https://developer.android.com/reference/android/view/View.html` to an item. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#onCreateViewHolder(android.view.ViewGroup)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/ViewGroup.html parent)` Creates a new `https://developer.android.com/reference/android/view/View.html`. |
| `void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder viewHolder)` Unbinds a `https://developer.android.com/reference/android/view/View.html` from an item. |
| `void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#setEntranceTransitionState(androidx.leanback.widget.VerticalGridPresenter.ViewHolder,boolean)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder holder, boolean afterEntrance )` Changes the visibility of views. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#setKeepChildForeground(boolean)(boolean keep)` Set if keeps foreground of child of this grid, the foreground will not be used for overlay color. |
| `void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#setNumberOfColumns(int)(int numColumns)` Sets the number of columns in the vertical grid. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#setOnItemViewClickedListener(androidx.leanback.widget.OnItemViewClickedListener)( @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/widget/OnItemViewClickedListener listener )` Sets the item clicked listener. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#setOnItemViewSelectedListener(androidx.leanback.widget.OnItemViewSelectedListener)( @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/leanback/widget/OnItemViewSelectedListener listener )` Sets the item selected listener. |
| `final void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#setShadowEnabled(boolean)(boolean enabled)` Enable or disable child shadow. |

| ### Protected methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#createGridViewHolder(android.view.ViewGroup)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/ViewGroup.html parent)` Subclass may override this to inflate a different layout. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/ShadowOverlayHelper.Options` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#createShadowOverlayOptions()()` Create ShadowOverlayHelper Options. |
| `void` | `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter#initializeGridViewHolder(androidx.leanback.widget.VerticalGridPresenter.ViewHolder)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder vh)` Called after a `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder` is created. |

### Inherited methods

From [androidx.leanback.widget.FacetProvider](https://developer.android.com/reference/androidx/leanback/widget/FacetProvider) `abstract @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html` `https://developer.android.com/reference/androidx/leanback/widget/FacetProvider#getFacet(java.lang.Class<?>)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> facetClass)`

Queries optional implemented facet.
From [androidx.leanback.widget.Presenter](https://developer.android.com/reference/androidx/leanback/widget/Presenter) `static void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#cancelAnimationsRecursive(android.view.View)(https://developer.android.com/reference/android/view/View.html view)`

Utility method for removing all running animations on a view.
`final https://developer.android.com/reference/java/lang/Object.html` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#getFacet(java.lang.Class<?>)(https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> facetClass)`

Queries optional implemented facet.
`void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder,java.lang.Object,java.util.List<java.lang.Object>)(

@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder viewHolder,

@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Object.html item,

@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/Object.html> payloads

)`

Binds a `https://developer.android.com/reference/android/view/View.html` to an item with a list of payloads.
`void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder holder)`

Called when a view created by this presenter has been attached to a window.
`void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder holder)`

Called when a view created by this presenter has been detached from its window.
`final void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#setFacet(java.lang.Class<?>,java.lang.Object)(https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> facetClass, https://developer.android.com/reference/java/lang/Object.html facetImpl)`

Sets dynamic implemented facet in addition to basic Presenter functions.
`void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder,android.view.View.OnClickListener)(

https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder holder,

https://developer.android.com/reference/android/view/View.OnClickListener.html listener

)`

Called to set a click listener for the given view holder.

## Public constructors

### VerticalGridPresenter

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

```
public VerticalGridPresenter()
```

Constructs a VerticalGridPresenter with defaults. Uses `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_LARGE()` for focus zooming and enabled dimming on focus.

### VerticalGridPresenter

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

```
public VerticalGridPresenter(int focusZoomFactor)
```

Constructs a VerticalGridPresenter with the given parameters.

| Parameters |
|---|---|
| `int focusZoomFactor` | Controls the zoom factor used when an item view is focused. One of `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_NONE()`, `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_SMALL()`, `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_XSMALL()`, `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_MEDIUM()`, `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_LARGE()` enabled dimming on focus. |

### VerticalGridPresenter

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

```
public VerticalGridPresenter(int focusZoomFactor, boolean useFocusDimmer)
```

Constructs a VerticalGridPresenter with the given parameters.

| Parameters |
|---|---|
| `int focusZoomFactor` | Controls the zoom factor used when an item view is focused. One of `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_NONE()`, `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_SMALL()`, `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_XSMALL()`, `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_MEDIUM()`, `https://developer.android.com/reference/androidx/leanback/widget/FocusHighlight#ZOOM_FACTOR_LARGE()` |
| `boolean useFocusDimmer` | determines if the FocusHighlighter will use the dimmer |

## Public methods

### areChildRoundedCornersEnabled

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

```
public final boolean areChildRoundedCornersEnabled()
```

Returns true if rounded corners are enabled for children of this row.

### enableChildRoundedCorners

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

```
public final void enableChildRoundedCorners(boolean enable)
```

Enables or disabled rounded corners on children of this row. Supported on Android SDK \>= L.

### getFocusZoomFactor

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

```
public final int getFocusZoomFactor()
```

Returns the zoom factor used for focus highlighting.

### getKeepChildForeground

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

```
public final boolean getKeepChildForeground()
```

Returns true if keeps foreground of child of this grid, the foreground will not be used for overlay color. Default value is true.

| Returns |
|---|---|
| `boolean` | True if keeps foreground of child of this grid. |

### getNumberOfColumns

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

```
public int getNumberOfColumns()
```

Returns the number of columns in the vertical grid.

### getOnItemViewClickedListener

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

```
public final @Nullable OnItemViewClickedListener getOnItemViewClickedListener()
```

Returns the item clicked listener.

### getOnItemViewSelectedListener

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

```
public final @Nullable OnItemViewSelectedListener getOnItemViewSelectedListener()
```

Returns the item selected listener.

### getShadowEnabled

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

```
public final boolean getShadowEnabled()
```

Returns true if child shadow is enabled. This is not only for enable/disable default shadow implementation but also subclass must respect this flag.

### isFocusDimmerUsed

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

```
public final boolean isFocusDimmerUsed()
```

Returns true if the focus dimmer is used for focus highlighting; false otherwise.

### isUsingDefaultShadow

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

```
public boolean isUsingDefaultShadow()
```

Default implementation returns true if SDK version \>= 21, shadow (either static or z-order based) will be applied to each individual child of `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridView`. Subclass may return false to disable default implementation of shadow and provide its own.

### isUsingZOrder

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

```
public boolean isUsingZOrder(@NonNull Context context)
```

Returns true if SDK \>= L, where Z shadow is enabled so that Z order is enabled on each child of vertical grid. If subclass returns false in isUsingDefaultShadow() and does not use Z-shadow on SDK \>= L, it should override isUsingZOrder() return false.

### onBindViewHolder

```
public void onBindViewHolder(
    @NonNull Presenter.ViewHolder viewHolder,
    @Nullable Object item
)
```

Binds a `https://developer.android.com/reference/android/view/View.html` to an item.

### onCreateViewHolder

```
public final @NonNull VerticalGridPresenter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent)
```

Creates a new `https://developer.android.com/reference/android/view/View.html`.

### onUnbindViewHolder

```
public void onUnbindViewHolder(@NonNull Presenter.ViewHolder viewHolder)
```

Unbinds a `https://developer.android.com/reference/android/view/View.html` from an item. Any expensive references may be released here, and any fields that are not bound for every item should be cleared here.

### setEntranceTransitionState

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

```
public void setEntranceTransitionState(
    @NonNull VerticalGridPresenter.ViewHolder holder,
    boolean afterEntrance
)
```

Changes the visibility of views. The entrance transition will be run against the views that change visibilities. This method is called by the fragment, it should not be called directly by the application.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder holder` | The ViewHolder for the vertical grid. |
| `boolean afterEntrance` | true if children of vertical grid participating in entrance transition should be set to visible, false otherwise. |

### setKeepChildForeground

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

```
public final void setKeepChildForeground(boolean keep)
```

Set if keeps foreground of child of this grid, the foreground will not be used for overlay color. Default value is true.

| Parameters |
|---|---|
| `boolean keep` | True if keep foreground of child of this grid. |

### setNumberOfColumns

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

```
public void setNumberOfColumns(int numColumns)
```

Sets the number of columns in the vertical grid.

### setOnItemViewClickedListener

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

```
public final void setOnItemViewClickedListener(
    @Nullable OnItemViewClickedListener listener
)
```

Sets the item clicked listener. OnItemViewClickedListener will override `https://developer.android.com/reference/android/view/View.OnClickListener.html` that item presenter sets during `https://developer.android.com/reference/androidx/leanback/widget/Presenter#onCreateViewHolder(android.view.ViewGroup)`. So in general, developer should choose one of the listeners but not both.

### setOnItemViewSelectedListener

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

```
public final void setOnItemViewSelectedListener(
    @Nullable OnItemViewSelectedListener listener
)
```

Sets the item selected listener. Since this is a grid the row parameter is always null.

### setShadowEnabled

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

```
public final void setShadowEnabled(boolean enabled)
```

Enable or disable child shadow. This is not only for enable/disable default shadow implementation but also subclass must respect this flag.

## Protected methods

### createGridViewHolder

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

```
protected @NonNull VerticalGridPresenter.ViewHolder createGridViewHolder(@NonNull ViewGroup parent)
```

Subclass may override this to inflate a different layout.

### createShadowOverlayOptions

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

```
protected @NonNull ShadowOverlayHelper.Options createShadowOverlayOptions()
```

Create ShadowOverlayHelper Options. Subclass may override. e.g. ` return new ShadowOverlayHelper.Options().roundedCornerRadius(10); `

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/ShadowOverlayHelper.Options` | The options to be used for shadow, overlay and rounded corner. |

### initializeGridViewHolder

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

```
protected void initializeGridViewHolder(@NonNull VerticalGridPresenter.ViewHolder vh)
```

Called after a `https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder` is created. Subclasses may override this method and start by calling super.initializeGridViewHolder(ViewHolder).

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/VerticalGridPresenter.ViewHolder vh` | The ViewHolder to initialize for the vertical grid. |