Class ListView

All Implemented Interfaces:
PointerInterface

public class ListView extends ListBase
`GtkListView` 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 [property@Gtk.ListView: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
[property@Gtk.ListView:enable-rubberband].

If you need multiple columns with headers, see [class@Gtk.ColumnView].

To learn more about the list widget framework, see the
[overview](section-list-widget.html).

An example of using `GtkListView`:
```c
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);
```

# 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 [property@Gtk.ListView:show-separators]
property is set. Each child widget uses a single CSS node named `row`.
If the [property@Gtk.ListItem: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](ListContainers.html#list-styles):
.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.

https://docs.gtk.org/gtk4/class.ListView.html

  • Field Details

  • Constructor Details

    • ListView

      public ListView(PointerContainer pointer)
    • ListView

      public ListView(@Nullable SelectionModel model, @Nullable ListItemFactory factory)
      Creates a new `GtkListView` that uses the given @factory for
      mapping items to widgets.

      The function takes ownership of the
      arguments, so you can write code like
      ```c
      list_view = gtk_list_view_new (create_model (),
      gtk_builder_list_item_factory_new_from_resource ("/resource.ui"));
      ```
      Parameters:
      model - the model to use
      factory - The factory to populate items with
  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • getEnableRubberband

      public boolean getEnableRubberband()
      Returns whether rows can be selected by dragging with the mouse.
      Returns:
      %TRUE if rubberband selection is enabled
    • getFactory

      public ListItemFactory getFactory()
      Gets the factory that's currently used to populate list items.
      Returns:
      The factory in use
    • getModel

      public SelectionModel getModel()
      Gets the model that's currently used to read the items displayed.
      Returns:
      The model in use
    • getShowSeparators

      public boolean getShowSeparators()
      Returns whether the list box should show separators
      between rows.
      Returns:
      %TRUE if the list box shows separators
    • getSingleClickActivate

      public boolean getSingleClickActivate()
      Returns whether rows will be activated on single click and
      selected on hover.
      Returns:
      %TRUE if rows are activated on single click
    • setEnableRubberband

      public void setEnableRubberband(boolean enable_rubberband)
      Sets whether selections can be changed by dragging with the mouse.
      Parameters:
      enable_rubberband - %TRUE to enable rubberband selection
    • setFactory

      public void setFactory(@Nullable ListItemFactory factory)
      Sets the `GtkListItemFactory` to use for populating list items.
      Parameters:
      factory - the factory to use
    • setModel

      public void setModel(@Nullable SelectionModel model)
      Sets the model to use.

      This must be a [iface@Gtk.SelectionModel] to use.
      Parameters:
      model - the model to use
    • setShowSeparators

      public void setShowSeparators(boolean show_separators)
      Sets whether the list box should show separators
      between rows.
      Parameters:
      show_separators - %TRUE to show separators
    • setSingleClickActivate

      public void setSingleClickActivate(boolean single_click_activate)
      Sets whether rows should be activated on single click and
      selected on hover.
      Parameters:
      single_click_activate - %TRUE to activate items on single click
    • onActivate

      public SignalHandler onActivate(ListView.OnActivate signal)
      Connect to signal "activate".
      See ListView.OnActivate.onActivate(int) for signal description.
      Field SIGNAL_ON_ACTIVATE contains original signal name and can be used as resource reference.
      Parameters:
      signal - callback function (lambda).
      Returns:
      SignalHandler. Can be used to disconnect signal and to release callback function.
    • asAccessible

      public Accessible asAccessible()
      Implements interface Accessible. Call this to get access to interface functions.
      Overrides:
      asAccessible in class ListBase
      Returns:
      Accessible
    • asBuildable

      public Buildable asBuildable()
      Implements interface Buildable. Call this to get access to interface functions.
      Overrides:
      asBuildable in class ListBase
      Returns:
      Buildable
    • asConstraintTarget

      public ConstraintTarget asConstraintTarget()
      Implements interface ConstraintTarget. Call this to get access to interface functions.
      Overrides:
      asConstraintTarget in class ListBase
      Returns:
      ConstraintTarget
    • asOrientable

      public Orientable asOrientable()
      Implements interface Orientable. Call this to get access to interface functions.
      Overrides:
      asOrientable in class ListBase
      Returns:
      Orientable
    • asScrollable

      public Scrollable asScrollable()
      Implements interface Scrollable. Call this to get access to interface functions.
      Overrides:
      asScrollable in class ListBase
      Returns:
      Scrollable
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()