Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to return collection of ListViewItems?

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());
like image 773
Haris Avatar asked Oct 31 '25 19:10

Haris


2 Answers

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());
like image 79
nsconnector Avatar answered Nov 03 '25 09:11

nsconnector


I think building an array of animals, then using AddRange on the listview could do the trick:

public static List<ListViewItem> DisplayAllAnimals()
{
    var animals = new List<ListViewItem>();

    //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

        animals.Add(item);
    }

    return animals;
}


lsbOverview.Items.AddRange(AnimalManager.DisplayAllAnimals().ToArray());
like image 43
Larry Avatar answered Nov 03 '25 10:11

Larry



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!