# Advanced Place List component

> [!NOTE]
> This is a Pro component and is billed differently from the Essentials components. See the [Overview](https://developers.google.com/maps/documentation/places/android-sdk/places-ui-kit-overview.md.txt) for more information.

The Advanced Place List component lets you to define and display a list of places. You can list up to 20 places from the same set of identities supported by the Place Details component (Place IDs, Place Resource Names, or lat/long coordinates).

You can choose from a horizontal or vertical list display. The default orientation is vertical. The same information and configuration options as the [compact and full place details cards](https://developers.google.com/maps/documentation/places/android-sdk/place-details-ui-kit.md.txt) are available for each list item.

Use the [`PlaceActionProvider`](https://developers.google.com/maps/documentation/places/android-sdk/reference/com/google/android/libraries/places/widget/model/PlaceActionProvider.md.txt) interface of the [`AdvancedPlaceListFragment`](https://developers.google.com/maps/documentation/places/android-sdk/reference/com/google/android/libraries/places/widget/AdvancedPlaceListFragment.md.txt) to create a list.

## Billing

You are billed for each list request, and any change to the list is a new billable event.

## Example

### Create an `AdvancedPlaceList` fragment

### Kotlin

```swift
// Initialize first
Places.initializeWithNewPlacesApiEnabled(context, API_KEY)

// how fragment is created
AdvancedPlaceListFragment.newInstance(
          selectedContent,
          orientation,
          R.style.BrandedPlaceDetailsTheme,
        )

// fragments support the same configurations that PlaceSearchFragment supports
fragment.preferTruncation = false
fragment.attributionPosition = AttributionPosition.BOTTOM
fragment.mediaSize = AdvancedPlaceListFragment.MediaSize.SMALL
fragment.selectable = true  
```

### Show a Place List

### Kotlin

```swift
// You can use resourceNames or placeIds
advancedPlaceListFragment.configureFromPlaceIds(placeIds)

advancedPlaceListFragment.configureFromResourceNames(resourceNames)

// Alternatively, use coordinates, which are a list of LatLng:
advancedPlaceListFragment.configureFromCoordinates(coordinates)
// Uses reverse geocoding to get the place
```

### Listen to results

### Kotlin

```swift
// Attach the existing PlaceSearchFragmentListener to get notified when places load or are selected from the results list.
override fun onAttachFragment(fragment: Fragment) {
    super.onAttachFragment(fragment)
    when (fragment) {
      // Reuse the placeSearchFragmetnListener from the Essentials version
      is AdvancedPlaceSearchFragment -> fragment.registerListener(placeSearchFragmentListener)
      // Use placeListFragmentListener, it's functionally identical but with a new name.  
      is AdvancedPlaceListFragment -> fragment.registerListener(advancedPlaceListFragmentListener)
    }
}
```