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(); } }