public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.AdvertisementItemRowView, parent, false);
            AdvertisementItemViewHolder vh = new AdvertisementItemViewHolder(itemView, OnAdvertisementItemClick, OnDeleteAdvertisementClick, OnEditAdvertisementClick);

            return(vh);
        }
        public override async void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            var currentItem = this.AdvertisementItems[position];
            AdvertisementItemViewHolder vh = holder as AdvertisementItemViewHolder;

            if (advertisementsKind == AdvertisementsKind.AdvertisementsCreatedByUser || advertisementsKind == AdvertisementsKind.FavouritesAdvertisements)
            {
                vh.DeleteAdvertisementFab.Visibility = ViewStates.Visible;
                if (advertisementsKind == AdvertisementsKind.AdvertisementsCreatedByUser)
                {
                    if (currentItem.IsExpired)
                    {
                        vh.DeleteAdvertisementFab.SetImageResource(Resource.Drawable.restart);
                        vh.EditAdvertisementFab.Visibility = ViewStates.Invisible;
                    }
                    else
                    {
                        vh.EditAdvertisementFab.Visibility = ViewStates.Visible;
                        vh.EditAdvertisementFab.BringToFront();
                    }
                }
            }
            else
            {
                vh.EditAdvertisementFab.Visibility   = ViewStates.Invisible;
                vh.DeleteAdvertisementFab.Visibility = ViewStates.Invisible;
            }

            if (currentItem.IsSellerOnline)
            {
                vh.SellerChatStateImageView.SetBackgroundResource(Resource.Drawable.rounded_chat_state_online);
            }
            else
            {
                vh.SellerChatStateImageView.SetBackgroundResource(Resource.Drawable.rounded_chat_state_offline);
            }
            if (currentItem.IsOnlyForSell)
            {
                vh.AdvertisementKindTextView.Text = "tylko sprzeda¿";
            }
            vh.SizeTextView.Text     = $"Rozmiar: {currentItem.Size.GetDisplayName()}";
            vh.DistanceTextView.Text = String.Format("{0} km", currentItem.Distance);
            vh.TitleTextView.Text    = currentItem.AdvertisementTitle;
            vh.PriceTextView.Text    = String.Format("{0} z³", currentItem.AdvertisementPrice);
            vh.PhotoImageView.SetImageBitmap(await bitmapOperationService.GetScaledDownBitmapForDisplayAsync(currentItem.MainPhoto));
            RaiseOnInfiniteScrollWhenItemIsLastInList(currentItem, vh);
            if (createdCount % 60 == 0)
            {
                //clean bitmaps after 60 attaches to avoid OOM Exception
                GC.Collect();
            }
            createdCount++;
        }
 private void RaiseOnInfiniteScrollWhenItemIsLastInList(AdvertisementItemShort currentItem, AdvertisementItemViewHolder viewHolder)
 {
     if (this.AdvertisementItems.IndexOf(currentItem) == (this.AdvertisementItems.Count - 1) && !InfiniteScrollDisabled)
     {
         this.infiniteScrollListener.OnInfiniteScroll();
     }
 }