How to return collection of ListViewItems?

c#, listview, winforms

Solution

Are you looking for this?

// declared in AnimalManager class
    private static List<Animal> AnimalList { get; set; }


     public static ListViewItem[] DisplayAllAnimals()
    {
        //Show animals on ListView by proper column
        var listViewItems = new List<ListViewItem>();
        foreach (var animal in AnimalList)
        {
            ListViewItem item = new ListViewItem(animal.Id); // generated ID
            item.SubItems.Add(animal.AnimalSort); // AnimalSort
            item.SubItems.Add(animal.Name); //Name
            item.SubItems.Add(animal.Age); //Age
            item.SubItems.Add(animal.Gender.ToString()); // Animal gender
            listViewItems.Add(item);

        }

        return listViewItems.ToArray();
    }


    // Mainform UI class where its used
    lsbOverview.Items.AddRange(AnimalManager.DisplayAllAnimals());

Problem

Sorry for the newbie question about `ListViewItems` but had never used `ListView` before and what I am trying to do is to return all `ListViewItems` from `AnimalManager` class back to UI `lsbOverview` control. Reason to this approach is that I have a `Manager` class which handles all the data and returns it to UI controls. The question is how do I return all items back to `lsboverView` `ListView`? ``` // declared in AnimalManager class private static List<Animal> AnimalList { get; set; } public static ListViewItem DisplayAllAnimals() { //Show animals on ListView by proper column foreach (var animal in AnimalList) { ListViewItem item = new ListViewItem(animal.Id); // generated ID item.SubItems.Add(animal.AnimalSort); // AnimalSort item.SubItems.Add(animal.Name); //Name item.SubItems.Add(animal.Age); //Age item.SubItems.Add(animal.Gender.ToString()); // Animal gender return item; } // how to return all items back to UI ? } // Mainform UI class where its used lsbOverview.Items.Add(AnimalManager.DisplayAllAnimals()); ```

Original source