> For the complete documentation index, see [llms.txt](https://docs.firework.com/firework-for-developers/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.firework.com/firework-for-developers/android-sdk/integration-guide/feed-sources/playlist-feed.md).

# Playlist Feed

Playlist Feed displays videos from a specific playlist within a channel. Unlike Channel Feed, the order is deterministic - videos appear in the same order they were added to the playlist, without recommendation engine interference.

## Overview

Playlist Feed provides:

* **Deterministic Order** - Videos appear in the exact order they were added
* **Curated Content** - Manually organized video collections
* **Fixed Sequence** - No algorithmic reordering

This makes it perfect for scenarios where video sequence matters, such as tutorial series, story-driven content, or seasonal campaigns.

## Usage

### Required Parameters

* `channelId` - Your encoded channel identifier (required, non-empty)
* `playlistId` - Your encoded playlist identifier (required, non-empty)

### XML Configuration

```xml
<com.firework.videofeed.FwVideoFeedView
    android:id="@+id/videoFeedView"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
```

### Programmatic Configuration

```kotlin
val viewOptions = viewOptions {
    baseOptions {
        feedResource(
            FeedResource.Playlist(
                channelId = "Your_Encoded_Channel_Id",
                playlistId = "Your_Encoded_Playlist_Id"
            )
        )
    }
    layoutOptions {
        feedLayout(FeedLayout.HORIZONTAL)
    }
}

val videoFeedView = findViewById<FwVideoFeedView>(R.id.videoFeedView)
videoFeedView.init(viewOptions)
```

## Complete Example

```kotlin
class FeaturedPlaylistActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_featured_playlist)
        
        val videoFeedView = findViewById<FwVideoFeedView>(R.id.videoFeedView)
        
        val viewOptions = viewOptions {
            baseOptions {
                feedResource(
                    FeedResource.Playlist(
                        channelId = "encoded_channelId",
                        playlistId = "encoded_playlistId"
                    )
                )
            }
            layoutOptions {
                feedLayout(FeedLayout.GRID)
                columnCount(2)
            }
            titleOptions {
                showFeedTitle(true)
            }
        }
        
        videoFeedView.init(viewOptions)
    }
}
```

## Dynamic Playlist Loading

```kotlin
class PlaylistGalleryActivity : AppCompatActivity() {
    private fun loadPlaylist(channelId: String, playlistId: String) {
        val videoFeedView = findViewById<FwVideoFeedView>(R.id.videoFeedView)
        
        val viewOptions = viewOptions {
            baseOptions {
                feedResource(
                    FeedResource.Playlist(
                        channelId = channelId,
                        playlistId = playlistId
                    )
                )
            }
            layoutOptions {
                feedLayout(FeedLayout.VERTICAL)
            }
        }
        
        videoFeedView.init(viewOptions)
    }
    
    private fun showTutorialSeries() {
        loadPlaylist(
            channelId = "encoded_channelId",
            playlistId = "encoded_playlistId"
        )
    }
    
    private fun showSeasonalContent() {
        loadPlaylist(
            channelId = "encoded_channelId",
            playlistId = "encoded_playlistId"
        )
    }
}
```

## Important Notes

* **Encoded IDs Required** - Both channel and playlist IDs must be encoded values provided by Firework
* **Empty String Exception** - Providing empty IDs will throw an exception
* **Deterministic Order** - Videos maintain their playlist order
* **No Recommendation** - The recommendation engine does not reorder playlist videos
* **Playlist Management** - Playlists can be managed through the Firework CMS

> **Tip:** Refer to the Firework documentation or contact your partner success team to learn how to find your encoded channel ID and playlist ID.

## Key Differences from Channel Feed

| Feature        | Channel Feed              | Playlist Feed                |
| -------------- | ------------------------- | ---------------------------- |
| Video Order    | Algorithmic (recommended) | Deterministic (manual order) |
| Content Source | All channel videos        | Specific playlist videos     |
| Use Case       | General browsing          | Sequential content           |
| Recommendation | ✅ Enabled                 | ❌ Disabled                   |

## See Also

* [Feed Sources Overview](/firework-for-developers/android-sdk/integration-guide/feed-sources.md) - All available feed types
* [Channel Feed](/firework-for-developers/android-sdk/integration-guide/feed-sources/channel-feed.md) - Display all videos from a channel
* [BaseOption Configuration](/firework-for-developers/android-sdk/integration-guide/configuration/base-options.md) - Detailed configuration
* [FwVideoFeedView](/firework-for-developers/android-sdk/integration-guide/configure-video-feed.md) - Video feed widget


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.firework.com/firework-for-developers/android-sdk/integration-guide/feed-sources/playlist-feed.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
