OnCreateViewHolder(ViewGroup parent, int viewType) { // Inflate the CardView for the photo: //////View itemView = LayoutInflater.From(parent.Context). ////// Inflate(Resource.Layout.List_item_private_chat_message_send_recv, parent, false); //////GroupMessageHolder vh = new GroupMessageHolder(itemView, OnClick,); //////return vh; RecyclerView.ViewHolder viewHolder = null; LayoutInflater inflater = LayoutInflater.From(parent.Context); switch (viewType) { case ListItem.TYPE_GENERAL: View v1 = inflater.Inflate(Resource.Layout.List_item_group_chat_message_send_recv, parent, false); viewHolder = new GroupMessageViewHolder(v1, OnClick, consolidatedList); break; case ListItem.TYPE_DATE: View v2 = inflater.Inflate(Resource.Layout.List_Item_Date_privateMsg, parent, false); viewHolder = new DateViewHolder(v2, consolidatedList); break; } return(viewHolder); }
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; } } }