コード例 #1
0
        //Get Search Api
        public async void GetSearch_Result(string key, string user_offset = "")
        {
            try
            {
                if (!IMethods.CheckConnectivity())
                {
                    Toast.MakeText(this, GetString(Resource.String.Lbl_Error_check_internet_connection),
                                   ToastLength.Short).Show();
                }
                else
                {
                    RunOnUiThread(() =>
                    {
                        if (user_offset == "")
                        {
                            swipeRefreshLayout.Refreshing = true;
                            swipeRefreshLayout.Enabled    = true;
                        }
                    });

                    var(api_status, respond) = await Global.Get_Search(UserDetails.User_id, key, "35", user_offset, "", "", Filter_gender);

                    if (api_status == 200)
                    {
                        if (respond is GetSearchObject result)
                        {
                            if (result.Users.Count <= 0 && result.Groups.Count <= 0 && result.Pages.Count <= 0)
                            {
                                return;
                            }

                            RunOnUiThread(() =>
                            {
                                //Add result users
                                //*===========================================*
                                if (result.Users.Count > 0 && result.Users.Count != 0)
                                {
                                    if (mAdapter.mSearchUserList.Count <= 0)
                                    {
                                        mAdapter.mSearchUserList = new ObservableCollection <GetSearchObject.User>(result.Users);
                                        mAdapter.BindEnd();
                                    }
                                    else
                                    {
                                        //Bring new item
                                        var listNew = result.Users?.Where(c => !mAdapter.mSearchUserList.Select(fc => fc.UserId).Contains(c.UserId)).ToList();
                                        if (listNew.Count > 0)
                                        {
                                            var lastCountItem = mAdapter.ItemCount;

                                            //Results differ
                                            Classes.AddRange(mAdapter.mSearchUserList, listNew);
                                            mAdapter.NotifyItemRangeInserted(lastCountItem, listNew.Count);
                                        }
                                    }
                                }
                            });
                        }
                    }
                    else if (api_status == 400)
                    {
                        if (respond is ErrorObject error)
                        {
                            var errorText = error._errors.Error_text;


                            if (errorText.Contains("Invalid or expired access_token"))
                            {
                                API_Request.Logout(this);
                            }
                        }
                    }
                    else if (api_status == 404)
                    {
                        var error = respond.ToString();
                    }

                    RunOnUiThread(() =>
                    {
                        //Show Empty Page
                        //===========================================
                        if (mAdapter.mSearchUserList.Count > 0)
                        {
                            SearchRecyler.Visibility      = ViewStates.Visible;
                            OnlineSearch_Empty.Visibility = ViewStates.Gone;
                        }
                        else
                        {
                            SearchRecyler.Visibility      = ViewStates.Gone;
                            OnlineSearch_Empty.Visibility = ViewStates.Visible;
                        }

                        //Set Event Scroll >> Users
                        if (User_OnMainScrolEvent == null)
                        {
                            var xamarinRecyclerViewOnScrollListener =
                                new XamarinRecyclerViewOnScrollListener(mLayoutManager);
                            User_OnMainScrolEvent = xamarinRecyclerViewOnScrollListener;
                            User_OnMainScrolEvent.LoadMoreEvent += LastUsers_OnScroll_OnLoadMoreEvent;
                            SearchRecyler.AddOnScrollListener(User_OnMainScrolEvent);
                            SearchRecyler.AddOnScrollListener(new ScrollDownDetector());
                        }
                        else
                        {
                            User_OnMainScrolEvent.IsLoading = false;
                        }

                        _SearchView.ClearFocus();
                        swipeRefreshLayout.Refreshing = false;
                    });
                }
                RunOnUiThread(() => { swipeRefreshLayout.Refreshing = false; });
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
                GetSearch_Result(search_key, LastUserid);
                RunOnUiThread(() =>
                {
                    swipeRefreshLayout.Refreshing = false;
                    if (mAdapter.mSearchUserList.Count > 0)
                    {
                        SearchRecyler.Visibility      = ViewStates.Visible;
                        OnlineSearch_Empty.Visibility = ViewStates.Gone;
                    }
                    else
                    {
                        SearchRecyler.Visibility      = ViewStates.Gone;
                        OnlineSearch_Empty.Visibility = ViewStates.Visible;
                    }
                });
            }
        }