Exemple #1
0
        // Replace the contents of a view (invoked by the layout manager)
        public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
        {
            try
            {
                if (viewHolder is ReplyAdapterViewHolder holder)
                {
                    var item = ReplyList[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.UserData.Avatar, holder.Image, ImageStyle.CircleCrop, ImagePlaceholders.Color);

                        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 AvatarReplyAdapterClickEventArgs {
                                Class = item.UserData, Position = position, View = holder.MainView
                            });
                        }

                        holder.LikeIcon.SetImageResource(item.IsLiked == 1 ? 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 == 0 ? 1 : 0;

                                        holder.LikeIcon.SetImageResource(item.IsLiked == 1 ? Resource.Drawable.ic_action_like_2 : Resource.Drawable.ic_action_like_1);
                                        holder.LikeIcon.StartAnimation(animationScale);

                                        if (item.IsLiked == 1)
                                        {
                                            Methods.AudioRecorderAndPlayer.PlayAudioFromAsset("reaction.mp3");

                                            item.Likes++;
                                            holder.LikeCount.Text = ActivityContext.GetString(Resource.String.Lbl_Likes) + " " + "(" + item.Likes + ")";
                                        }
                                        else
                                        {
                                            if (item.Likes > 0)
                                            {
                                                item.Likes--;
                                            }
                                            else
                                            {
                                                item.Likes = 0;
                                            }

                                            holder.LikeCount.Text = ActivityContext.GetString(Resource.String.Lbl_Likes) + " " + "(" + item.Likes + ")";
                                        }

                                        RequestsAsync.Post.LikeReply(item.Id.ToString()).ConfigureAwait(false);
                                    }
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine(e);
                                }
                            };
                        }

                        if (!holder.ReplyButton.HasOnClickListeners)
                        {
                            holder.ReplyButton.Click += (sender, args) =>
                            {
                                try
                                {
                                    //ActivityContext.TxtComment.Text = "";
                                    //ActivityContext.TxtComment.Text = "@" + item.Publisher.Username + " ";
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine(e);
                                }
                            }
                        }
                        ;
                    }
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
        }
        // 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);
            }
        }