Package com.castlabs.android.player

## Interface Playlist

- All Known Implementing Classes:
    `MultiControllerPlaylist`, `PlaylistController`, `SingleControllerPlaylist`

      public interface Playlist

  Common Playlist interface.
  Since:
    4.2.5

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addItem​(int position, PlayerConfig config)` | Adds an item at the specified position in the playlist.
    `void` | `addItem​(PlayerConfig config)` | Adds an item at the end of the playlist.
    `PlayerConfig` | `getCurrentItem()` | Returns the currently playing item
    `int` | `getCurrentItemIndex()` | Returns current item index
    `List<PlayerConfig>` | `getPlaylist()` | Returns the current Playlist as a List of `PlayerConfig` items.
    `int` | `getSize()` | Returns the number of Configs in the playlist.
    `PlayerConfig` | `nextItem()` | Advances playback to the next Playlist item.
    `void` | `open​(int startIndex, Parcelable... playerConfigs)` | Start playback with the specified index and with an Array of `PlayerConfigs` or `Bundles`.
    `void` | `open​(int startIndex, List<? extends Parcelable> playerConfigs)` | Start playback with the specified index and player configs
    `void` | `open​(Parcelable... playerConfigs)` | Starts playback with an Array of `PlayerConfigs` or `Bundles`.
    `void` | `open​(List<? extends Parcelable> playerConfigs)` | Starts playback with a List of `PlayerConfigs` or `Bundles`.
    `PlayerConfig` | `playItem​(int index)` | Advances playback to the Playlist item specified by the index.
    `PlayerConfig` | `previousItem()` | Moves backwards in the Playlist.
    `void` | `removeItem​(PlayerConfig config)` | Removes an item from the Playlist.
    `void` | `swap​(PlayerConfig playerConfig1, PlayerConfig playerConfig2)` | Interchanges two Playlist items.

- - ### Method Detail

    - #### addItem

          void addItem​(@NonNull
                       PlayerConfig config)

      Adds an item at the end of the playlist.
      Parameters:
        `config` - item to add

    - #### addItem

          void addItem​(int position,
                       @NonNull
                       PlayerConfig config)

      Adds an item at the specified position in the playlist.
      Parameters:
        `position` - the position at which to add the item.
        `config` - item to add
      Throws:
        `IndexOutOfBoundsException` - if the position is negative or greater than the current Playlist size.

    - #### removeItem

          void removeItem​(@NonNull
                          PlayerConfig config)

      Removes an item from the Playlist. Note that this element must exist in the playlist already (ie. be part of `getPlaylist()`).
      Parameters:
        `config` - item to remove

    - #### swap

          void swap​(@NonNull
                    PlayerConfig playerConfig1,
                    @NonNull
                    PlayerConfig playerConfig2)

      Interchanges two Playlist items. If any of such items is the currently playing item, playback won't be affected.
      Parameters:
        `playerConfig1` - first item to swap
        `playerConfig2` - second item to swap

    - #### getCurrentItem

          @Nullable
          PlayerConfig getCurrentItem()

      Returns the currently playing item
      Returns:
        the currently playing item

    - #### getPlaylist

          List<PlayerConfig> getPlaylist()

      Returns the current Playlist as a List of `PlayerConfig` items.
      Returns:
        the current Playlist

    - #### getSize

          int getSize()

      Returns the number of Configs in the playlist.
      Returns:
        number of Configs

    - #### getCurrentItemIndex

          int getCurrentItemIndex()

      Returns current item index
      Returns:
        Current item index or `-1` otherwise

    - #### open

          void open​(@NonNull
                    Parcelable... playerConfigs)

      Starts playback with an Array of `PlayerConfigs` or `Bundles`.

      The playlist might apply some generic configuration to the items passed to this method. This implies that the items in the playlist *won't necessarily be the same instances*.

      Parameters:
        `playerConfigs` - array of PlayerConfigs or Bundles, each representing a Playlist item.

    - #### open

          void open​(int startIndex,
                    @NonNull
                    Parcelable... playerConfigs)

      Start playback with the specified index and with an Array of `PlayerConfigs` or `Bundles`.

      The playlist might apply some generic configuration to the items passed to this method. This implies that the items in the playlist *won't necessarily be the same instances*.

      Parameters:
        `startIndex` - The index of the config to start playback with
        `playerConfigs` - The array of player configs to play

    - #### open

          void open​(@NonNull
                    List<? extends Parcelable> playerConfigs)

      Starts playback with a List of `PlayerConfigs` or `Bundles`.

      The playlist might apply some generic configuration to the items passed to this method. This implies that the items in the playlist *won't necessarily be the same instances*.

      Parameters:
        `playerConfigs` - list of PlayerConfigs, or Bundles each representing a Playlist item.

    - #### open

          void open​(int startIndex,
                    @NonNull
                    List<? extends Parcelable> playerConfigs)

      Start playback with the specified index and player configs

      The playlist might apply some generic configuration to the items passed to this method. This implies that the items in the playlist *won't necessarily be the same instances*.

      Parameters:
        `startIndex` - The index of the config to start playback with
        `playerConfigs` - The list of player configs to play

    - #### nextItem

          @Nullable
          PlayerConfig nextItem()

      Advances playback to the next Playlist item.
      Returns:
        the next item to play. If null, the end of the Playlist has been reached.

    - #### playItem

          @Nullable
          PlayerConfig playItem​(int index)

      Advances playback to the Playlist item specified by the index.
      Returns:
        the item to play. If null, the end of the Playlist has been reached.

    - #### previousItem

          @Nullable
          PlayerConfig previousItem()

      Moves backwards in the Playlist.
      Returns:
        the next item to play. If null, the start of the Playlist has been reached.