// Replace the contents of a view (invoked by the layout manager) public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { try { if (viewHolder is CommentAdapterViewHolder holder) { var item = CommentList[position]; if (item != null) { TextSanitizer changer = new TextSanitizer(holder.CommentText, ActivityContext); changer.Load(Methods.FunString.DecodeString(item.Text)); holder.TimeTextView.Text = Methods.Time.TimeAgo(Convert.ToInt32(item.Time)); GlideImageLoader.LoadImage(ActivityContext, item.Avatar, holder.Image, ImageStyle.CircleCrop, ImagePlaceholders.Color); if (item.Replies != 0) { holder.ReplyButton.Text = ActivityContext.GetString(Resource.String.Lbl_Reply) + " " + "(" + item.Replies + ")"; } else { holder.ReplyButton.Text = ActivityContext.GetString(Resource.String.Lbl_Reply); } holder.LikeCount.Text = ActivityContext.GetString(Resource.String.Lbl_Likes) + " " + "(" + item.Likes + ")"; if (!holder.Image.HasOnClickListeners) { holder.Image.Click += (sender, e) => OnAvatarClick(new AvatarCommentAdapterClickEventArgs { Class = item, Position = position, View = holder.MainView }); } holder.LikeIcon.SetImageResource(item.IsLiked ? Resource.Drawable.ic_action_like_2 : Resource.Drawable.ic_action_like_1); if (!holder.LikeIcon.HasOnClickListeners) { MyBounceInterpolator interpolator = new MyBounceInterpolator(0.2, 20); var animationScale = AnimationUtils.LoadAnimation(ActivityContext, Resource.Animation.scale); animationScale.Interpolator = interpolator; holder.LikeIcon.Click += (sender, args) => { try { if (!Methods.CheckConnectivity()) { Toast.MakeText(ActivityContext, ActivityContext.GetString(Resource.String.Lbl_CheckYourInternetConnection), ToastLength.Long).Show(); } else { item.IsLiked = !item.IsLiked; holder.LikeIcon.SetImageResource(item.IsLiked? Resource.Drawable.ic_action_like_2: Resource.Drawable.ic_action_like_1); holder.LikeIcon.StartAnimation(animationScale); if (item.IsLiked) { Methods.AudioRecorderAndPlayer.PlayAudioFromAsset("reaction.mp3"); int x = int.Parse(item.Likes) + 1; holder.LikeCount.Text = ActivityContext.GetString(Resource.String.Lbl_Likes) + " " + "(" + x.ToString() + ")"; } else { int x = int.Parse(item.Likes); if (x > 0) { x--; } else { x = 0; } item.Likes = x.ToString(); holder.LikeCount.Text = ActivityContext.GetString(Resource.String.Lbl_Likes) + " " + "(" + item.Likes + ")"; } RequestsAsync.Post.LikeComment(item.Id.ToString()).ConfigureAwait(false); } } catch (Exception e) { Console.WriteLine(e); } }; } if (!holder.ReplyButton.HasOnClickListeners) { holder.ReplyButton.Click += (sender, args) => ClickListeners.CommentReplyPostClick(new CommentReplyClickEventArgs { CommentObject = item, Position = position, View = holder.MainView }); } } if (AppSettings.SetTabDarkTheme) { holder.LikeIcon.SetBackgroundResource(Resource.Drawable.Shape_Circle_Black); } } } catch (Exception exception) { Console.WriteLine(exception); } }