public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { try { var view = MyContextWrapper.GetContentView(Context, Settings.Lang, Resource.Layout.Market_Fragment); if (view == null) { view = inflater.Inflate(Resource.Layout.Market_Fragment, container, false); } MainRecyclerView = view.FindViewById <RecyclerView>(Resource.Id.Recyler); Market_Empty = view.FindViewById <LinearLayout>(Resource.Id.Market_LinerEmpty); IconEmpty = view.FindViewById <TextView>(Resource.Id.Market_icon); IMethods.Set_TextViewIcon("2", IconEmpty, "\uf07a"); Btn_AddProduct = view.FindViewById <Button>(Resource.Id.AddProduct_Button); swipeRefreshLayout = view.FindViewById <SwipeRefreshLayout>(Resource.Id.swipeRefreshLayout); swipeRefreshLayout.SetColorSchemeResources(Android.Resource.Color.HoloBlueLight, Android.Resource.Color.HoloGreenLight, Android.Resource.Color.HoloOrangeLight, Android.Resource.Color.HoloRedLight); swipeRefreshLayout.Refreshing = true; swipeRefreshLayout.Enabled = true; MainRecyclerView.Visibility = ViewStates.Visible; Market_Empty.Visibility = ViewStates.Gone; MMarketAdapter = new MarketAdapter(Activity); mLayoutManager = new GridLayoutManager(Activity, 2); MainRecyclerView.SetLayoutManager(mLayoutManager); MainRecyclerView.AddItemDecoration(new GridSpacingItemDecoration(2, 10, true)); var animation = AnimationUtils.LoadAnimation(Activity, Resource.Animation.slideUpAnim); MainRecyclerView.StartAnimation(animation); MMarketAdapter.MarketList = new ObservableCollection <Get_Products_Object.Product>(); MainRecyclerView.SetAdapter(MMarketAdapter); MainRecyclerView.HasFixedSize = (true); MainRecyclerView.SetItemViewCacheSize(5); MainRecyclerView.GetLayoutManager().ItemPrefetchEnabled = true; MainRecyclerView.DrawingCacheEnabled = (true); Get_Data_local(); return(view); } catch (Exception e) { Crashes.TrackError(e); return(null); } }
//Get Data Market Using API public async void Get_DataMarket_Api(string offset = "") { try { if (!IMethods.CheckConnectivity()) { Activity.RunOnUiThread(() => { swipeRefreshLayout.Refreshing = false; }); Toast.MakeText(Activity, Activity.GetString(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Short).Show(); } else { var(Api_status, Respond) = await Client.Market.Get_Products("", "35", offset); if (Api_status == 200) { if (Respond is Get_Products_Object result) { Activity.RunOnUiThread(() => { if (result.products.Length <= 0) { if (swipeRefreshLayout.Refreshing) { swipeRefreshLayout.Refreshing = false; } } else if (result.products.Length > 0) { if (MMarketAdapter.MarketList.Count <= 0) { MMarketAdapter.MarketList = new ObservableCollection <Get_Products_Object.Product>(result.products); MMarketAdapter.BindEnd(); var animation = AnimationUtils.LoadAnimation(Activity, Resource.Animation.slideUpAnim); MainRecyclerView.StartAnimation(animation); } else { //Bring new item //var exceptList = result.products?.ToList().Except(MMarketAdapter?.MarketList).ToList(); var listnew = result.products?.Where(c => !MMarketAdapter.MarketList.Select(fc => fc.id).Contains(c.id)).ToList(); if (listnew.Count > 0) { var lastCountItem = MMarketAdapter.ItemCount; //Results differ Classes.AddRange(MMarketAdapter.MarketList, listnew); MMarketAdapter.NotifyItemRangeInserted(lastCountItem, listnew.Count); } if (swipeRefreshLayout.Refreshing) { swipeRefreshLayout.Refreshing = false; } } } }); } } else if (Api_status == 400) { if (Respond is Error_Object error) { var errortext = error._errors.Error_text; //Toast.MakeText(this.Activity, errortext, ToastLength.Short).Show(); if (errortext.Contains("Invalid or expired access_token")) { API_Request.Logout(Activity); } } } else if (Api_status == 404) { var error = Respond.ToString(); //Toast.MakeText(this.Activity, error, ToastLength.Short).Show(); } } //Show Empty Page >> //=============================================================== Activity.RunOnUiThread(() => { swipeRefreshLayout.Refreshing = false; if (MMarketAdapter.MarketList.Count > 0) { if (MainRecyclerView.Visibility == ViewStates.Gone) { MainRecyclerView.Visibility = ViewStates.Visible; } if (Market_Empty.Visibility == ViewStates.Visible) { Market_Empty.Visibility = ViewStates.Gone; } } else if (MMarketAdapter.MarketList.Count <= 0) { MainRecyclerView.Visibility = ViewStates.Gone; Market_Empty.Visibility = ViewStates.Visible; } //Set Event Scroll if (MarketMainScrolEvent == null) { var xamarinRecyclerViewOnScrollListener = new XamarinRecyclerViewOnScrollListener(mLayoutManager, swipeRefreshLayout); MarketMainScrolEvent = xamarinRecyclerViewOnScrollListener; MarketMainScrolEvent.LoadMoreEvent += Market_FragmentOnScroll_OnLoadMoreEvent; MainRecyclerView.AddOnScrollListener(MarketMainScrolEvent); MainRecyclerView.AddOnScrollListener(new ScrollDownDetector()); } else { MarketMainScrolEvent.IsLoading = false; } }); } catch (Exception e) { Crashes.TrackError(e); Get_DataMarket_Api(offset); } }