0

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>();
P.K.
  • 1,746
  • 6
  • 25
  • 62

0 Answers0