I am new to Xamarin and I am facing a problem: I created a list view and I want to search it using linq. I created a popup dialog that have the edit text for the search but when I click the search button I get ("System.NullReferenceException: Object reference not set to an instance of an object.") here is the code and the error :( this is my listview
private List<Friend> mFriends;
private ListView mListView;
private EditText mSearch;
private FriendsAdapter mAdapter;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.filter);
mListView = FindViewById<ListView>(Resource.Id.listView1);
mFriends = new List<Friend>();
mFriends.Add(new Friend { FirstName = "Bob", LastName = "Smith", Age = "33", Gender = "Male" });
mFriends.Add(new Friend { FirstName = "Tom", LastName = "Smith", Age = "45", Gender = "Male" });
mFriends.Add(new Friend { FirstName = "Julie", LastName = "Smith", Age = "2020", Gender = "Unknown" });
mFriends.Add(new Friend { FirstName = "Molly", LastName = "Smith", Age = "21", Gender = "Female" });
mFriends.Add(new Friend { FirstName = "Joe", LastName = "Lopez", Age = "22", Gender = "Male" });
mFriends.Add(new Friend { FirstName = "Ruth", LastName = "White", Age = "81", Gender = "Female" });
mFriends.Add(new Friend { FirstName = "Sally", LastName = "Johnson", Age = "54", Gender = "Female" });
mAdapter = new FriendsAdapter(this, Resource.Layout.row_friend, mFriends);
mListView.Adapter = mAdapter;
this is the dialog which has the search
Button sched_btn = FindViewById<Button>(Resource.Id.button1);
sched_btn.Click += delegate
{
View view = LayoutInflater.Inflate(Resource.Layout.filterpop, null);
AlertDialog builder = new AlertDialog.Builder(this).Create();
builder.SetView(view);
builder.SetCanceledOnTouchOutside(false);
mSearch = FindViewById<EditText>(Resource.Id.editText1);
Button button = view.FindViewById<Button>(Resource.Id.button2);
Button button1 = view.FindViewById<Button>(Resource.Id.button1);
button1.Click += delegate {
List<Friend> searchedFriends = (from friend in mFriends
where friend.FirstName.Contains(mSearch.Text) || friend.LastName.Contains(mSearch.Text)
|| friend.Age.Contains(mSearch.Text) || friend.Gender.Contains(mSearch.Text)
select friend).ToList<Friend>();
mAdapter = new FriendsAdapter(this, Resource.Layout.row_friend, searchedFriends);
mListView.Adapter = mAdapter;
builder.Dismiss();
};
button.Click += delegate {
builder.Dismiss();
Toast.MakeText(this, "Alert dialog dismissed!", ToastLength.Short).Show();
};
builder.Show();
};
i get the exception at :
List<Friend> searchedFriends = (from friend in mFriends
where friend.FirstName.Contains(mSearch.Text, StringComparison.OrdinalIgnoreCase) || friend.LastName.Contains(mSearch.Text, StringComparison.OrdinalIgnoreCase)
|| friend.Age.Contains(mSearch.Text, StringComparison.OrdinalIgnoreCase) || friend.Gender.Contains(mSearch.Text, StringComparison.OrdinalIgnoreCase)
select friend).ToList<Friend>();