### Class

# Gtk ListView

#### Description [src]

    final class Gtk.ListView : Gtk.ListBase
      implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Orientable, Gtk.Scrollable {
      /* No available fields */
    }

Presents a large dynamic list of items.

`GtkListView` uses its factory to generate one row widget for each visible item and shows them in a linear display, either vertically or horizontally.

The `GtkListView:show-separators` property offers a simple way to display separators between the rows.

`GtkListView` allows the user to select items according to the selection characteristics of the model. For models that allow multiple selected items, it is possible to turn on rubberband selection, using `GtkListView:enable-rubberband`.

If you need multiple columns with headers, see `GtkColumnView`.

To learn more about the list widget framework, see the overview.

An example of using `GtkListView`:

    static void
    setup_listitem_cb (GtkListItemFactory *factory,
                       GtkListItem        *list_item)
    {
      GtkWidget *image;

      image = gtk_image_new ();
      gtk_image_set_icon_size (GTK_IMAGE (image), GTK_ICON_SIZE_LARGE);
      gtk_list_item_set_child (list_item, image);
    }

    static void
    bind_listitem_cb (GtkListItemFactory *factory,
                      GtkListItem        *list_item)
    {
      GtkWidget *image;
      GAppInfo *app_info;

      image = gtk_list_item_get_child (list_item);
      app_info = gtk_list_item_get_item (list_item);
      gtk_image_set_from_gicon (GTK_IMAGE (image), g_app_info_get_icon (app_info));
    }

    static void
    activate_cb (GtkListView  *list,
                 guint         position,
                 gpointer      unused)
    {
      GAppInfo *app_info;

      app_info = g_list_model_get_item (G_LIST_MODEL (gtk_list_view_get_model (list)), position);
      g_app_info_launch (app_info, NULL, NULL, NULL);
      g_object_unref (app_info);
    }

    ...

      model = create_application_list ();

      factory = gtk_signal_list_item_factory_new ();
      g_signal_connect (factory, "setup", G_CALLBACK (setup_listitem_cb), NULL);
      g_signal_connect (factory, "bind", G_CALLBACK (bind_listitem_cb), NULL);

      list = gtk_list_view_new (GTK_SELECTION_MODEL (gtk_single_selection_new (model)), factory);

      g_signal_connect (list, "activate", G_CALLBACK (activate_cb), NULL);

      gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), list);

# Actions

`GtkListView` defines a set of built-in actions:

- `list.activate-item` activates the item at given position by emitting the `GtkListView::activate` signal.

# CSS nodes

    listview[.separators][.rich-list][.navigation-sidebar][.data-table]
    ├── row[.activatable]
    │
    ├── row[.activatable]
    │
    ┊
    ╰── [rubberband]

`GtkListView` uses a single CSS node named `listview`. It may carry the `.separators` style class, when `GtkListView:show-separators` property is set. Each child widget uses a single CSS node named `row`. If the `GtkListItem:activatable` property is set, the corresponding row will have the `.activatable` style class. For rubberband selection, a node with name `rubberband` is used.

The main listview node may also carry style classes to select the style of list presentation: .rich-list, .navigation-sidebar or .data-table.

# Accessibility

`GtkListView` uses the `GTK_ACCESSIBLE_ROLE_LIST` role, and the list items use the `GTK_ACCESSIBLE_ROLE_LIST_ITEM` role.

#### Ancestors

- GtkListBase
- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- GtkAccessible
- GtkBuildable
- GtkConstraintTarget
- GtkOrientable
- GtkScrollable

#### Constructors

###### gtk_list_view_new

Creates a new `GtkListView` that uses the given `factory` for mapping items to widgets.

#### Instance methods

###### gtk_list_view_get_enable_rubberband

Returns whether rows can be selected by dragging with the mouse.

###### gtk_list_view_get_factory

Gets the factory that’s currently used to populate list items.

###### gtk_list_view_get_header_factory

Gets the factory that’s currently used to populate section headers.

since: 4.12

###### gtk_list_view_get_model

Gets the model that’s currently used to read the items displayed.

###### gtk_list_view_get_show_separators

Returns whether the listview should show separators between rows.

###### gtk_list_view_get_single_click_activate

Returns whether rows will be activated on single click and selected on hover.

###### gtk_list_view_get_tab_behavior

Gets the behavior set for the `Tab` key.

since: 4.12

###### gtk_list_view_scroll_to

Scrolls to the item at the given position and performs the actions specified in `flags`.

since: 4.12

###### gtk_list_view_set_enable_rubberband

Sets whether selections can be changed by dragging with the mouse.

###### gtk_list_view_set_factory

Sets the `GtkListItemFactory` to use for populating list items.

###### gtk_list_view_set_header_factory

Sets the `GtkListItemFactory` to use for populating the `GtkListHeader` objects used in section headers.

since: 4.12

###### gtk_list_view_set_model

Sets the model to use.

###### gtk_list_view_set_show_separators

Sets whether the listview should show separators between rows.

###### gtk_list_view_set_single_click_activate

Sets whether rows should be activated on single click and selected on hover.

###### gtk_list_view_set_tab_behavior

Sets the `Tab` key behavior.

since: 4.12

##### Methods inherited from GtkWidget (164)

Please see GtkWidget for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GtkAccessible (21)

###### gtk_accessible_announce

Requests the user’s screen reader to announce the given message.

since: 4.14

###### gtk_accessible_get_accessible_id

Retrieves the accessible identifier for the accessible object.

since: 4.22

###### gtk_accessible_get_accessible_parent

Retrieves the accessible parent for an accessible object.

since: 4.10

###### gtk_accessible_get_accessible_role

Retrieves the accessible role of an accessible object.

###### gtk_accessible_get_at_context

Retrieves the implementation for the given accessible object.

since: 4.10

###### gtk_accessible_get_bounds

Queries the coordinates and dimensions of this accessible.

since: 4.10

###### gtk_accessible_get_first_accessible_child

Retrieves the first accessible child of an accessible object.

since: 4.10

###### gtk_accessible_get_next_accessible_sibling

Retrieves the next accessible sibling of an accessible object.

since: 4.10

###### gtk_accessible_get_platform_state

Queries a platform state, such as focus.

since: 4.10

###### gtk_accessible_reset_property

Resets the accessible property to its default value.

###### gtk_accessible_reset_relation

Resets the accessible relation to its default value.

###### gtk_accessible_reset_state

Resets the accessible state to its default value.

###### gtk_accessible_set_accessible_parent

Sets the parent and sibling of an accessible object.

since: 4.10

###### gtk_accessible_update_next_accessible_sibling

Updates the next accessible sibling.

since: 4.10

###### gtk_accessible_update_platform_state

Informs ATs that the platform state has changed.

since: 4.18

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

##### Methods inherited from GtkOrientable (2)

###### gtk_orientable_get_orientation

Retrieves the orientation of the `orientable`.

###### gtk_orientable_set_orientation

Sets the orientation of the `orientable`.

##### Methods inherited from GtkScrollable (9)

###### gtk_scrollable_get_border

Returns the size of a non-scrolling border around the outside of the scrollable.

###### gtk_scrollable_get_hadjustment

Retrieves the `GtkAdjustment` used for horizontal scrolling.

###### gtk_scrollable_get_hscroll_policy

Gets the horizontal `GtkScrollablePolicy`.

###### gtk_scrollable_get_vadjustment

Retrieves the `GtkAdjustment` used for vertical scrolling.

###### gtk_scrollable_get_vscroll_policy

Gets the vertical `GtkScrollablePolicy`.

###### gtk_scrollable_set_hadjustment

Sets the horizontal adjustment of the `GtkScrollable`.

###### gtk_scrollable_set_hscroll_policy

Sets the `GtkScrollablePolicy`.

###### gtk_scrollable_set_vadjustment

Sets the vertical adjustment of the `GtkScrollable`.

###### gtk_scrollable_set_vscroll_policy

Sets the `GtkScrollablePolicy`.

#### Properties

###### Gtk.ListView:enable-rubberband

Allow rubberband selection.

###### Gtk.ListView:factory

Factory for populating list items.

###### Gtk.ListView:header-factory

Factory for creating header widgets.

since: 4.12

###### Gtk.ListView:model

Model for the items displayed.

###### Gtk.ListView:show-separators

Show separators between rows.

###### Gtk.ListView:single-click-activate

Activate rows on single click and select them on hover.

###### Gtk.ListView:tab-behavior

Behavior of the `Tab` key.

since: 4.12

##### Properties inherited from GtkListBase (1)

###### Gtk.ListBase:orientation

The orientation of the list. See GtkOrientable:orientation for details.

##### Properties inherited from GtkWidget (35)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the `GtkWidget::query-tooltip` signal on `widget`.

###### Gtk.Widget:height-request

Overrides for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:limit-events

Makes this widget act like a modal dialog, with respect to event delivery.

since: 4.18

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Overrides for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### GtkAccessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

##### Properties inherited from GtkOrientable (1)

###### GtkOrientable:orientation

The orientation of the orientable.

##### Properties inherited from GtkScrollable (4)

###### GtkScrollable:hadjustment

Horizontal `GtkAdjustment` of the scrollable widget.

###### GtkScrollable:hscroll-policy

Determines when horizontal scrolling should start.

###### GtkScrollable:vadjustment

Vertical `GtkAdjustment` of the scrollable widget.

###### GtkScrollable:vscroll-policy

Determines when vertical scrolling should start.

#### Signals

###### Gtk.ListView::activate

Emitted when a row has been activated by the user.

##### Signals inherited from GtkWidget (13)

###### GtkWidget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### GtkWidget::direction-changed

Emitted when the text direction of a widget changes.

###### GtkWidget::hide

Emitted when `widget` is hidden.

###### GtkWidget::keynav-failed

Emitted if keyboard navigation fails.

###### GtkWidget::map

Emitted when `widget` is going to be mapped.

###### GtkWidget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### GtkWidget::move-focus

Emitted when the focus is moved.

###### GtkWidget::query-tooltip

Emitted when the widget’s tooltip is about to be shown.

###### GtkWidget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### GtkWidget::show

Emitted when `widget` is shown.

###### GtkWidget::state-flags-changed

Emitted when the widget state changes.

###### GtkWidget::unmap

Emitted when `widget` is going to be unmapped.

###### GtkWidget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct GtkListViewClass {
      /* no available fields */
    }

No description available.