ProductInCategoryTemplate CreateProduct(Product product, bool isInExistence)
        {
            ProductInCategoryTemplate productItem = new ProductInCategoryTemplate();

            productItem.ShowProduct(product, isInExistence);
            productItem.EventClick += ClickProduct;
            return(productItem);


//#if __ANDROID__
//				var activityManager = Android.App.Application.Context.GetSystemService(Android.App.Activity.ActivityService) as Android.App.ActivityManager;
//				Android.App.ActivityManager.MemoryInfo memoryInfo = new Android.App.ActivityManager.MemoryInfo();
//				activityManager.GetMemoryInfo(memoryInfo);
//				double TotalUsed = memoryInfo.AvailMem / (1024 * 1024);
//				double TotalRam = memoryInfo.TotalMem / (1024 * 1024);
//				bool lowMemory = memoryInfo.LowMemory;
//				Console.WriteLine("LowMemory = " + lowMemory + " TotalUsed = " + TotalUsed.ToString("f2") + "/" + TotalRam.ToString("f2"));
//				//Java.Lang.Runtime.GetRuntime().MaxMemory
//#endif
//#if __IOS__
//				double totalRam = Foundation.NSProcessInfo.ProcessInfo.PhysicalMemory / (1024 * 1024);
//				Console.WriteLine("Memory = " + totalRam.ToString("f2"));
//#endif
            //return productItem;
        }
        public void ShowGrid(Grid grid, List <Product> productsList, bool IsOrientationPortrait, int countColumn)
        {
            bool isInExistence;

            if (productsList == null || productsList.Count == 0)
            {
                IsCompleteShowGrid = true;
                return;
            }
            int i = 0;


            indicator.IsVisible         = false;
            layoutProductGrid.IsVisible = true;


            Task.Run(() => {
                foreach (Product product in productsList)
                {
                    if (CancelTSProduct.IsCancellationRequested)
                    {
                        CancelTSProduct = new CancellationTokenSource();
                        return;
                    }
                    if (product.productsAttributes.Count > 0)
                    {
                        isInExistence = false;
                        for (int j = 0; j < product.productsAttributes.Count; j++)
                        {
                            if (product.productsAttributes[j].Quantity > 0)
                            {
                                isInExistence = true;
                            }
                        }
                    }
                    else
                    {
                        isInExistence = true;
                    }

                    if (!isInExistence || product.productsDescription == null)
                    {
                        continue;
                    }

                    ProductInCategoryTemplate productItem = null;
                    if (i <= grid.Children.Count - 1)
                    {
                        productItem = grid.Children[i] as ProductInCategoryTemplate;
                        productItem.ShowProduct(product, isInExistence);
                    }
                    else
                    {
                        productItem             = new ProductInCategoryTemplate();
                        productItem.EventClick += ClickProduct;
                        grid.Children.Add(productItem);


                        productItem.ShowProduct(product, isInExistence);
                        AddProduct(productItem, i, countColumn, grid);
                    }
                    i++;
                }
                IsCompleteShowGrid = true;
            });
        }
        public void ShowGrid(Grid grid, List <Product> productsList, bool IsOrientationPortrait, int countColumn)
        {
            bool isGridChildrenZero = grid.Children.Count == 0;

            bool isInExistence;

            if (productsList == null || productsList.Count == 0)
            {
                IsCompleteShowGrid = true;
                return;
            }
            int i = 0;

            Task.Run(() => {
                foreach (Product product in productsList)
                {
                    if (CancelTSProduct.IsCancellationRequested)
                    {
                        CancelTSProduct    = new CancellationTokenSource();
                        IsCompleteShowGrid = true;
                        return;
                    }
                    if (product.productsAttributes.Count > 0)
                    {
                        isInExistence = false;
                        for (int j = 0; j < product.productsAttributes.Count; j++)
                        {
                            if (product.productsAttributes[j].Quantity > 0)
                            {
                                isInExistence = true;
                            }
                        }
                    }
                    else
                    {
                        isInExistence = true;
                    }

                    if (!isInExistence || product.productsDescription == null)
                    {
                        continue;
                    }

                    ProductInCategoryTemplate productItem = null;
                    if (i <= grid.Children.Count - 1)
                    {
                        productItem = grid.Children[i] as ProductInCategoryTemplate;                        //.Take();
                        Device.BeginInvokeOnMainThread(() => {
                            productItem.IsVisible = true;
                            productItem.ShowProduct(product, isInExistence);
                        });
                        if (isGridChildrenZero)
                        {
                            AddProduct(productItem, i, countColumn, grid);
                        }
                    }
                    else
                    {
                        //productItem = new ProductInCategoryTemplate();
                        //productItem.EventClick += ClickProduct;
                        ////OnePage.mainPage.productItemsList.Add(productItem);


                        //productItem.ShowProduct(product, isInExistence);
                        //AddProduct(productItem, i, countColumn, grid);
                    }
                    i++;
                }
                IsCompleteShowGrid = true;

                Device.BeginInvokeOnMainThread(() => {
                    grid.HeightRequest = Math.Ceiling((double)productsList.Count / 2) * (210 + 10);
                    //if (CancelTSProduct.IsCancellationRequested) {
                    //	CancelTSProduct = new CancellationTokenSource();

                    //	indicator.IsVisible = false;
                    //	layoutProductGrid.IsVisible = false;
                    //}

                    if (contentAndHeads1 != null && contentAndHeads1.countPage > 1)
                    {
                        SetPagination(paginationBegin, contentAndHeads1);
                        SetPagination(paginationEnd, contentAndHeads1);
                    }
                    else
                    {
                        paginationBegin.IsVisible = false;
                        paginationEnd.IsVisible   = false;
                    }
                    indicator.IsVisible         = false;
                    layoutProductGrid.IsVisible = true;
                });
            });
        }