Object Hierarchy:

Object hierarchy for ListView


[ CCode ( type_id = "gtk_list_view_get_type ()" ) ]
public class ListView : ListBase, Accessible, Buildable, ConstraintTarget, Orientable, Scrollable

`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.navigation-sidebar ├── 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.


`GtkListView` uses the gtk_accessible_role_list role, and the list items use the gtk_accessible_role_list_item role.

Namespace: Gtk
Package: gtk4



Creation methods:



Inherited Members:

All known members inherited from class Gtk.Widget
All known members inherited from interface Gtk.Orientable