---
title: List Inventory
description: "**Read the Inventory documentation first.** List Inventory uses the same containers, item data, events, and core inventory functions as the base system. This page only covers the list-view presentation and sorting behavior. For shared setup guidance, see the [Migration Guide](/docs/getting-started/migrate-and-integrate-hyper/)…"
url: "https://gamesbyhyper.com/docs/item-management/list-inventory/"
updated: "2026-05-25"
category: Item Management
---

# List Inventory

**Read the Inventory documentation first.** List Inventory uses the same containers, item data, events, and core inventory functions as the base system. This page only covers the list-view presentation and sorting behavior.

For shared setup guidance, see the [Migration Guide](/docs/getting-started/migrate-and-integrate-hyper/) and [Integration Guide](/docs/getting-started/migrate-and-integrate-hyper/). Use the [System Atlas](/docs/system-atlas/) to look up functions, variables, events, components, and ownership references. Use this page for list-view UI and sorting behavior.

**Related setup:** [Set Up Inventory for the Player](/docs/getting-started/set-up-inventory-for-the-player/), [Change Inventory Type on Interact Locations](/docs/getting-started/change-inventory-type-on-interact-locations/).

# Related Videos

**Version note:** Some videos may have been recorded before V4. Concepts still apply, but asset names, component names, and folder locations may differ. Treat this written documentation as the source of truth.

- Add Jigsaw or List-Based Inventories to your Unreal Project
  [Add Jigsaw or List-Based Inventories to your Unreal Project](https://www.youtube-nocookie.com/embed/dd-4q0U7G4M?rel=0&modestbranding=1)

# Overview

List Inventory is an alternative UI for the same **BP_Inventory_Container** data. Instead of displaying items in a slot grid, it renders them in a scrollable list that can be sorted and compactly scanned.

![What's Different from Base Inventory screenshot](/wp-content/uploads/docs/Item%20Management/List%20Inventory/list-inventory-what-s-different-from-base-inventory-screenshot-001.png)

| List inventory changes | Base inventory behavior that stays the same |
| --- | --- |
| - Vertical list presentation. - Sorting by category, name, weight, value, quantity, or custom properties. - No spatial slot positioning in the UI. - Compact rows can show more metadata at once. | - Same **BP_Inventory_Container**. - Same item structs and container functions. - Same events, including **OnInventorySlotUpdated**. - Same add, remove, transfer, drag-and-drop, and context-menu actions. - The same container can be shown as grid or list view. |

# Sorting

Sorting is the main advantage of list-based inventory. Common sort options include:

- **Category:** Groups items by Gameplay Tag category, such as Weapons, Consumables, or Resources.
- **Name:** Alphabetical order.
- **Weight:** Lightest to heaviest, or reversed.
- **Value:** Cheapest to most expensive, or reversed.
- **Quantity:** Stack size.
- **Recently Added:** Newest items first.

![Sort Options screenshot](/wp-content/uploads/docs/Item%20Management/List%20Inventory/list-inventory-sort-options-screenshot-002.png)
 ![Sort Options screenshot](/wp-content/uploads/docs/Item%20Management/List%20Inventory/list-inventory-sort-options-screenshot-003.png)
 ![Sort Options screenshot](/wp-content/uploads/docs/Item%20Management/List%20Inventory/list-inventory-sort-options-screenshot-004.png)

Most sort options should support ascending and descending order. The UI should show the active sort and direction with a highlighted button, checkmark, arrow, or similar indicator.

# Custom Sort Functions

Custom sort functions can compare any item property exposed through the item struct or related data. Examples include weapon damage, armor rating, rarity, durability, or game-specific stats.

1. Get all items from the container with **GetAllItems**.
2. Read the property you want to sort by from each item.
3. Compare values and sort the array.
4. Regenerate the list display from the sorted array.
5. Optionally support ascending and descending direction with a boolean or enum.

Example: **SortByDamage** gets all items, reads each item's damage value, compares those values, then returns the sorted array.

![How to Add Custom Sort Options screenshot](/wp-content/uploads/docs/Item%20Management/List%20Inventory/list-inventory-how-to-add-custom-sort-options-screenshot-005.png)

# List UI Structure

The list UI binds to the same container as the grid UI. The difference is the widget structure and how items are rendered.

- **Container panel:** Main inventory window.
- **Sort controls:** Buttons for available sort modes.
- **Scroll Box:** Holds generated list item widgets.
- **List item widget:** One row per inventory item.
- **Footer:** Optional totals such as weight, value, and item count.

A list item widget typically shows the item icon, name, quantity, stack size, weight, value, and optional quick action buttons.

# List Generation

1. Get the container reference.
2. Call **GetAllItems**.
3. Apply the active sort function.
4. Clear existing row widgets.
5. Create one list item widget per sorted item.
6. Populate each row with item data.
7. Add each row to the Scroll Box.

When the container fires **OnInventorySlotUpdated**, the list UI should regenerate using the current sort. Preserve scroll position if that matters for the UX.

# Set Up List View UI

1. Create a widget Blueprint for the list inventory, or use the provided list widget template.
2. Add a **Scroll Box** for item rows.
3. Add sort buttons for the supported sort options.
4. Add footer elements for totals if needed.
5. Create a row widget with icon, text fields, and optional buttons or hover states.
6. When opening the inventory, get the container reference from **AC_Inventory**.
7. Pass the container reference into the list widget.
8. Bind to **OnInventorySlotUpdated**.
9. Generate the initial list.
10. Test item updates, sorting, use/drop/transfer actions, and performance with many items.

To toggle between grid and list views, destroy the current UI, create the other view, and bind it to the same container reference. The container state persists across view changes.
