# ItemList.Builder

# ItemList.Builder

Artifact:[androidx.car.app:app](https://developer.android.com/jetpack/androidx/releases/car-app)  
[View Source](https://cs.android.com/search?q=file:androidx/car/app/model/ItemList.java+class:androidx.car.app.model.ItemList.Builder)  
Added in[1.0.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.0.0)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/car/app/model/ItemList.Builder "View this page in Java")

<br />

```
class ItemList.Builder
```

<br />

*** ** * ** ***

A builder of[ItemList](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList).

## Summary

|                                                                                                          ### Public constructors                                                                                                           |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#Builder())`()` Returns an empty[Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder)instance. |

|                                            ### Public functions                                            |
|------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ItemList.Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder) | [addItem](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#addItem(androidx.car.app.model.Item))`(item: `[Item](https://developer.android.com/reference/kotlin/androidx/car/app/model/Item)`)` Adds an item to the list.                                                                                                                                                                                                                                                                                                                                                                                      |
| [ItemList](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList)                 | [build](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#build())`()` Constructs the item list defined by this builder.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| [ItemList.Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder) | `@`[ExperimentalCarApi](https://developer.android.com/reference/kotlin/androidx/car/app/annotations/ExperimentalCarApi) [clearItems](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#clearItems())`()` Removes all[Item](https://developer.android.com/reference/kotlin/androidx/car/app/model/Item)s added via[addItem](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#addItem(androidx.car.app.model.Item))                                                                                                                                                        |
| [ItemList.Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder) | [setNoItemsMessage](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#setNoItemsMessage(java.lang.CharSequence))`(noItemsMessage: `[CharSequence](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-char-sequence/index.html)`)` Sets the text to display if the list is empty.                                                                                                                                                                                                                                                                                                                            |
| [ItemList.Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder) | [setOnItemsVisibilityChangedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#setOnItemsVisibilityChangedListener(androidx.car.app.model.ItemList.OnItemVisibilityChangedListener))`(` ` itemVisibilityChangedListener: `[ItemList.OnItemVisibilityChangedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.OnItemVisibilityChangedListener) `)` Sets the[OnItemVisibilityChangedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.OnItemVisibilityChangedListener)to call when the visible items in the list changes. |
| [ItemList.Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder) | [setOnSelectedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#setOnSelectedListener(androidx.car.app.model.ItemList.OnSelectedListener))`(onSelectedListener: `[ItemList.OnSelectedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.OnSelectedListener)`)` Marks the list as selectable by setting the[OnSelectedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.OnSelectedListener)to call when an item is selected by the user, or set to`null`to mark the list as non-selectable.                              |
| [ItemList.Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder) | [setSelectedIndex](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#setSelectedIndex(int))`(selectedIndex: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 0) `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`)` Sets the index of the item to show as selected.                                                                                                                                                                                                                                                               |

## Public constructors

### Builder

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

```
Builder()
```

Returns an empty[Builder](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder)instance.  

## Public functions

### addItem

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

```
fun addItem(item: Item): ItemList.Builder
```

Adds an item to the list.  

|                                                    Throws                                                     |
|---------------------------------------------------------------------------------------------------------------|------------------|
| [java.lang.NullPointerException](https://developer.android.com/reference/java/lang/NullPointerException.html) | if`item`is`null` |

### build

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

```
fun build(): ItemList
```

Constructs the item list defined by this builder.  

|                                                     Throws                                                      |
|-----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [java.lang.IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException.html) | if the list is selectable but does not have any items, if the selected index is greater or equal to the size of the list, or if the list is selectable and any items have either one of their[OnClickListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/OnClickListener)or[Toggle](https://developer.android.com/reference/kotlin/androidx/car/app/model/Toggle)set |

### clearItems

Added in[1.3.0](https://developer.android.com/jetpack/androidx/releases/car-app#1.3.0)  

```
@ExperimentalCarApi
fun clearItems(): ItemList.Builder
```

Removes all[Item](https://developer.android.com/reference/kotlin/androidx/car/app/model/Item)s added via[addItem](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#addItem(androidx.car.app.model.Item))  

### setNoItemsMessage

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

```
fun setNoItemsMessage(noItemsMessage: CharSequence): ItemList.Builder
```

Sets the text to display if the list is empty.

If the list is empty and the app does not explicitly set the message with this method, the host will show a default message.

Spans are not supported in the input string and will be ignored.  

|                                                    Throws                                                     |
|---------------------------------------------------------------------------------------------------------------|----------------------------|
| [java.lang.NullPointerException](https://developer.android.com/reference/java/lang/NullPointerException.html) | if`noItemsMessage`is`null` |

### setOnItemsVisibilityChangedListener

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

```
fun setOnItemsVisibilityChangedListener(
    itemVisibilityChangedListener: ItemList.OnItemVisibilityChangedListener
): ItemList.Builder
```

Sets the[OnItemVisibilityChangedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.OnItemVisibilityChangedListener)to call when the visible items in the list changes.

Note that the listener relates to UI events and will be executed on the main thread using[getMainLooper](https://developer.android.com/reference/android/os/Looper.html#getMainLooper()).  

|                                                    Throws                                                     |
|---------------------------------------------------------------------------------------------------------------|-------------------------------------------|
| [java.lang.NullPointerException](https://developer.android.com/reference/java/lang/NullPointerException.html) | if`itemVisibilityChangedListener`is`null` |

### setOnSelectedListener

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

```
fun setOnSelectedListener(onSelectedListener: ItemList.OnSelectedListener): ItemList.Builder
```

Marks the list as selectable by setting the[OnSelectedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.OnSelectedListener)to call when an item is selected by the user, or set to`null`to mark the list as non-selectable.

Selectable lists, where allowed by the template they are added to, automatically display an item in a selected state when selected by the user.

The items in the list define a mutually exclusive selection scope: only a single item will be selected at any given time.

The specific way in which the selection will be visualized depends on the template and the host implementation. For example, some templates may display the list as a radio button group, while others may highlight the selected item's background.  

|                                                    Throws                                                     |
|---------------------------------------------------------------------------------------------------------------|--------------------------------|
| [java.lang.NullPointerException](https://developer.android.com/reference/java/lang/NullPointerException.html) | if`onSelectedListener`is`null` |

|                                                             See also                                                             |
|----------------------------------------------------------------------------------------------------------------------------------|---|
| [setSelectedIndex](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#setSelectedIndex(int)) |   |

### setSelectedIndex

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

```
fun setSelectedIndex(selectedIndex: @IntRange(from = 0) Int): ItemList.Builder
```

Sets the index of the item to show as selected.

By default and unless explicitly set with this method, the first item is selected.

If the list is not a selectable list set with[setOnSelectedListener](https://developer.android.com/reference/kotlin/androidx/car/app/model/ItemList.Builder#setOnSelectedListener(androidx.car.app.model.ItemList.OnSelectedListener)), this value is ignored.