I'm trying to filter an ObservableCollection in Xamarin project but have problems. I have field "Checked" in my model Names which returns true
or false
. I need to get data where field "Checked" equals true.
My code looks like items = new ObservableCollection<Models.Names>(items.Where(w => w.Checked == true).ToList())
But I am getting error >! Unhandled Exception: System.ArgumentNullException: Value cannot be null. Parameter name: collection occurred
What I am missing? Hope for help.
Current code example.
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace Project.Mobile.Client.Portable.Views.Names
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class NewPage : ContentPage
{
public ObservableCollection<Models.Names> items { get; set; }
public NamesNewPage()
{
items = new ObservableCollection<Models.Names>(items.Where(w => w.Checked == true).ToList());
this.BindingContext = this;
InitializeComponent();
// Disabling selection
Lst.ItemSelected += (sender, e) => {
((ListView)sender).SelectedItem = null;
};
Lst.Refreshing += (sender, e) => {
LoadUsersData();
};
LoadUsersData();
}
public async void LoadUsersData()
{
Lst.IsRefreshing = true;
var names= await App.Database.Names.GetItemsAsync();
items.Clear();
foreach (var item in names)
items.Add(item);
Lst.IsRefreshing = false;
}
public async void OnItemTapped(object sender, ItemTappedEventArgs e)
{
NamesReadPage readPage = new NamesReadPage();
readPage.BindingContext = e.Item as Models.Names;
await Navigation.PushAsync(readPage);
}
}
}