// 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; }
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; } } }