Пример #1
0
        // Load the adapter with the data set (photo album) at construction time:
        public GroupMessageAdapter(Activity ContextActy, Dictionary <DateTime, List <GroupMessage> > GroupMessage)
        {
            //  rvmGroupMessage = GroupMessage.ToList();

            consolidatedList = new List <ListItem>();

            foreach (var item in GroupMessage)
            {
                DateItem dateItem = new DateItem();
                dateItem.setDate(item.Key.ToShortDateString());
                consolidatedList.Add(dateItem);

                foreach (var general in item.Value)
                {
                    GeneralGroupItem generalItem = new GeneralGroupItem();
                    generalItem.setChatMessagearray(general);
                    consolidatedList.Add(generalItem);
                }
            }
            context = ContextActy;
        }
Пример #2
0
        OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            GroupMessageViewHolder vh = holder as GroupMessageViewHolder;

            switch (consolidatedList[position].getType())
            {
            case 1:
            {
                GeneralGroupItem GeneralItem = (GeneralGroupItem)consolidatedList[position];

                var item = GeneralItem.getChatMessagearray();
                //Boolean isMe = item.ContactId != Common.CommonHelper.GetUserId();
                var AttachList = (item.MessageId != 0) ? Repositories.GroupRepository.GetGroupMessageAttachList(item.MessageId) : new List <GroupAttachment>();
                //    var item = rvmGroupMessage[position];
                Boolean ishide = false;
                if (position > 0)
                {
                    if (consolidatedList[position - 1].getType() == 1)
                    {
                        GeneralGroupItem GeneralItemPrevious = (GeneralGroupItem)consolidatedList[position - 1];
                        string           oldName             = GeneralItemPrevious.getChatMessagearray().senderName;
                        string           newName             = item.senderName;
                        ishide = oldName == newName;
                    }
                }


                Boolean isMe = item.SenderUserId == Common.CommonHelper.GetUserId();

                if (isMe)
                {
                    vh.tv_messageRight.Text   = item.MessageText;
                    vh.message_timeRight.Text = item.MessageTime.ToLocalTime().ToString("hh:mm tt");

                    if (AttachList.Count > 0)
                    {
                        CommonHelper.SetImageOnUIImageView(vh.iv_AttachImage, AttachList.FirstOrDefault().url, context, 600, 600);

                        vh.iv_AttachImage.SetOnClickListener(new iv_AttachImageClikLitenerGroupImage(item, context));
                        vh.ll_LinearLayoutForImageAttachRight.Visibility = ViewStates.Visible;
                    }
                    else
                    {
                        vh.ll_LinearLayoutForImageAttachRight.Visibility = ViewStates.Gone;
                    }

                    var Status = (item.MessageId != 0) ? Repositories.GroupRepository.GetGroupMessageOverallStatusbyid(item.MessageId) : new GroupMessageStatus();
                    if (Status.IsRead)
                    {
                        vh.iv_StatusRight.SetImageResource(Resource.Drawable.message_got_read_receipt_from_target);
                    }

                    else if (Status.IsRecieved)
                    {
                        vh.iv_StatusRight.SetImageResource(Resource.Drawable.message_got_receipt_from_target);
                    }

                    else if (Status.IsSend)
                    {
                        vh.iv_StatusRight.SetImageResource(Resource.Drawable.message_got_receipt_from_server);
                    }
                    else
                    {
                        vh.iv_StatusRight.SetImageResource(Resource.Drawable.pending);
                    }

                    vh.ll_LinearLayoutRight.Visibility = ViewStates.Visible;
                    vh.ll_LinearLayoutLeft.Visibility  = ViewStates.Gone;
                }
                else
                {
                    vh.tv_messageLeft.Text   = item.MessageText;
                    vh.message_timeLeft.Text = item.MessageTime.ToLocalTime().ToString("hh:mm tt");
                    if (ishide)
                    {
                        vh.tv_SenderNameLeft.Visibility = ViewStates.Gone;
                    }
                    else
                    {
                        vh.tv_SenderNameLeft.Visibility = ViewStates.Visible;
                        vh.tv_SenderNameLeft.Text       = item.senderName;
                    }
                    if (AttachList.Count > 0)
                    {
                        CommonHelper.SetImageOnUIImageView(vh.iv_AttachImageLeft, AttachList.FirstOrDefault().url, context, 600, 600);
                        vh.iv_AttachImageLeft.SetOnClickListener(new iv_AttachImageLeftClikLitenerGroupImage(item, context));
                        vh.ll_LinearLayoutForImageAttachLeft.Visibility = ViewStates.Visible;
                    }
                    else
                    {
                        vh.ll_LinearLayoutForImageAttachLeft.Visibility = ViewStates.Gone;
                    }

                    vh.ll_LinearLayoutLeft.Visibility  = ViewStates.Visible;
                    vh.ll_LinearLayoutRight.Visibility = ViewStates.Gone;
                }
                break;
            }

            case 0:
            {
                DateViewHolder dh           = holder as DateViewHolder;
                DateItem       DateItem     = (DateItem)consolidatedList[position];
                var            datetimedata = Convert.ToDateTime(DateItem.getDate()).ToLocalTime().Date;

                if (datetimedata.Date == DateTime.Now.Date)
                {
                    dh.txt_Date_message.Text = "Today";
                }
                else if (datetimedata.Date == DateTime.Now.Date.AddDays(-1))
                {
                    dh.txt_Date_message.Text = "Yesterday";
                }
                else
                {
                    dh.txt_Date_message.Text = datetimedata.ToString("MMM dd, yyyy");
                }
                break;
            }
            }
        }