@Override public void convert(LQRViewHolderForRecyclerView helper, Message item, int position) { setTime(helper, item, position); setView(helper, item, position); if (!(item.getContent() instanceof GroupNotificationMessage) && !(item.getContent() instanceof RecallNotificationMessage) && (getItemViewType(position) != UNDEFINE_MSG)) { setAvatar(helper, item, position); setName(helper, item, position); setStatus(helper, item, position); setOnClick(helper, item, position); } }
boolean isSend = msg.getMessageDirection() == Message.MessageDirection.SEND ? true : false; MessageContent msgContent = msg.getContent(); if (msgContent instanceof TextMessage) { return isSend ? SEND_TEXT : RECEIVE_TEXT;
mAdapter.setOnItemClickListener((helper, parent, itemView, position) -> { Message message = mData.get(position); MessageContent content = message.getContent(); if (content instanceof ImageMessage) { ImageMessage imageMessage = (ImageMessage) content; MessageContent content = message.getContent(); if (content instanceof GroupNotificationMessage || content instanceof RecallNotificationMessage) { return false;
private void setView(LQRViewHolderForRecyclerView helper, Message item, int position) { MessageContent msgContent = item.getContent(); if (msgContent instanceof TextMessage) { MoonUtils.identifyFaceExpression(mContext, helper.getView(R.id.tvText), ((TextMessage) msgContent).getContent(), ImageSpan.ALIGN_BOTTOM);
private void setStatus(LQRViewHolderForRecyclerView helper, Message item, int position) { MessageContent msgContent = item.getContent(); if (msgContent instanceof TextMessage || msgContent instanceof LocationMessage || msgContent instanceof VoiceMessage) {
@Override public boolean onReceived(Message message, int i) { MessageContent messageContent = message.getContent(); if (messageContent instanceof ContactNotificationMessage) { ContactNotificationMessage contactNotificationMessage = (ContactNotificationMessage) messageContent;
@Override public boolean onReceived(Message message, int i) { handleEvent(MESSAGE_ARRIVED, message.getContent()); return false; } };
@Override public boolean onMessageClick(final Context context, final View view, final Message message) { //real-time location message end /** * demo 代码 开发者需替换成自己的代码。 */ if (message.getContent() instanceof ImageMessage) { /*Intent intent = new Intent(context, PhotoActivity.class); intent.putExtra("message", message); context.startActivity(intent);*/ } return false; }
/** * @param message * @param v * @param context */ public VoicePlayClickListener(Message message, ImageView v, Context context) { this.message = message; voiceUri = ((VoiceMessage) message.getContent()).getUri(); this.context = context; voiceIconView = v; }
@Override public void onClick(View v) { double lat = ((LocationMessage) message.getContent()).getLat(); // 维度 double lng = ((LocationMessage) message.getContent()).getLng(); // 经度 Intent intent = new Intent(context, BaiduMapActivity.class); intent.putExtra("lat", lat); intent.putExtra("lng", lng); context.startActivity(intent); } });
holder.content.setText(((LocationMessage) message.getContent()).getPoi());
/** * 处理文本消息 * * @param message * @param holder * @param position */ private void handleTextMessage(Message message, ViewHoder holder, int position) { Spannable span = SmileUtils.getSmiledText(context, ((TextMessage) message.getContent()).getContent()); holder.content.setText(span, TextView.BufferType.SPANNABLE); if (message.getMessageDirection() == Message.MessageDirection.SEND) { switch (message.getSentStatus()) { case DESTROYED://对方已销毁 case FAILED://发送失败 holder.progressBar.setVisibility(View.GONE); holder.state.setVisibility(View.VISIBLE); break; case SENDING://发送中 holder.progressBar.setVisibility(View.VISIBLE); holder.state.setVisibility(View.GONE); break; case READ: case RECEIVED://对方已接受 case SENT://已发送 holder.progressBar.setVisibility(View.GONE); holder.state.setVisibility(View.GONE); break; } } }
/** * 通过消息去创建对应的视图 * * @param baseMessage */ private View createViewByMessage(Message baseMessage) { MessageContent content = baseMessage.getContent(); if (content instanceof TextMessage) { // 文本消息 return View.inflate(context, baseMessage.getMessageDirection() == Message.MessageDirection.RECEIVE ? R.layout.chat_item_txt_revice : R.layout.chat_item_txt_send, null); } else if (content instanceof ImageMessage) { // 图片消息 return View.inflate(context, baseMessage.getMessageDirection() == Message.MessageDirection.RECEIVE ? R.layout.chat_item_img_revice : R.layout.chat_item_img_send, null); } else if (content instanceof LocationMessage) { // 位置消息 return View.inflate(context, baseMessage.getMessageDirection() == Message.MessageDirection.RECEIVE ? R.layout.chat_item_location_revice : R.layout.chat_item_location_send, null); } else if (content instanceof VoiceMessage) { // 语音消息 return View.inflate(context, baseMessage.getMessageDirection() == Message.MessageDirection.RECEIVE ? R.layout.chat_item_voice_revice : R.layout.chat_item_voice_send, null); } else if (content instanceof InformationNotificationMessage) { //小灰色提醒消息 return null; } else { return View.inflate(context, baseMessage.getMessageDirection() == Message.MessageDirection.RECEIVE ? R.layout.chat_item_txt_revice : R.layout.chat_item_txt_send, null); } } }
ViewHoder viewHoder = null; final Message message = getItem(position); MessageContent messageContent = message.getContent(); if (null == convertView) { viewHoder = new ViewHoder(); convertView = createViewByMessage(messages.get(position)); if (message.getContent() instanceof TextMessage) { try { viewHoder.time = (TextView) convertView.findViewById(R.id.chat_tv_time); } catch (Exception e) { } else if (message.getContent() instanceof ImageMessage) { try { viewHoder.time = (TextView) convertView.findViewById(R.id.chat_tv_time); } catch (Exception e) { } else if (message.getContent() instanceof VoiceMessage) { try { viewHoder.time = (TextView) convertView.findViewById(R.id.chat_tv_time); } catch (Exception e) { } else if (message.getContent() instanceof LocationMessage) { try { viewHoder.time = (TextView) convertView.findViewById(R.id.chat_tv_time);
int voiceTime = ((VoiceMessage) message.getContent()).getDuration(); if (0 < voiceTime) {//有效声音 changeViewWidth(holder, voiceTime); Log.d("Tanck", "收到语音地址:" + ((VoiceMessage) message.getContent()).getUri()); RongIMClient.getInstance().downloadMedia(Conversation.ConversationType.PRIVATE, tagId, RongIMClient.MediaType.AUDIO, String.valueOf(((VoiceMessage) message.getContent()).getUri()), new RongIMClient.DownloadMediaCallback() { @Override public void onProgress(int i) {
@Override public View getView(int position, View convertView, ViewGroup parent) { final ChattingRecordsViewHolder viewHolder; Message message = (Message) getItem(position); if (convertView == null) { viewHolder = new ChattingRecordsViewHolder(); convertView = View.inflate(getBaseContext(), R.layout.item_filter_chatting_records_list, null); viewHolder.portraitImageView = (SelectableRoundedImageView) convertView.findViewById(R.id.item_iv_record_image); viewHolder.chatDetailLinearLayout = (LinearLayout) convertView.findViewById(R.id.item_ll_chatting_records_detail); viewHolder.nameTextView = (TextView) convertView.findViewById(R.id.item_tv_chat_name); viewHolder.chatRecordsDetailTextView = (TextView) convertView.findViewById(R.id.item_tv_chatting_records_detail); viewHolder.chatRecordsDateTextView = (TextView)convertView.findViewById(R.id.item_tv_chatting_records_date); convertView.setTag(viewHolder); } else { viewHolder = (ChattingRecordsViewHolder) convertView.getTag(); } String id = mResult.getId(); String title = mResult.getTitle(); UserInfo userInfo = new UserInfo(id, title, Uri.parse(mResult.getPortraitUri())); String portraitUri = SealUserInfoManager.getInstance().getPortraitUri(userInfo); ImageLoader.getInstance().displayImage(portraitUri, viewHolder.portraitImageView, App.getOptions()); viewHolder.nameTextView.setText(title); viewHolder.chatRecordsDetailTextView.setText(CharacterParser.getInstance().getColoredChattingRecord(mFilterString, message.getContent())); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String date = simpleDateFormat.format(new Date(message.getSentTime())); String formatDate = date.replace("-", "/"); viewHolder.chatRecordsDateTextView.setText(formatDate); return convertView; } }
final Uri imgUri = ((ImageMessage) message.getContent()).getThumUri(); Log.d("Tanck", "收到图片消息:" + imgUri); holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override public int getItemViewType(int position) { Message message = messages.get(position); MessageContent messageContent = message.getContent(); if (messageContent instanceof TextMessage) {// 文本 return message.getMessageDirection() == Message.MessageDirection.RECEIVE ? MESSAGE_TYPE_RECV_TXT : MESSAGE_TYPE_SENT_TXT; } else if (messageContent instanceof ImageMessage) { // 图片 return message.getMessageDirection() == Message.MessageDirection.RECEIVE ? MESSAGE_TYPE_RECV_IMAGE : MESSAGE_TYPE_SENT_IMAGE; } else if (messageContent instanceof LocationMessage) {// 位置 return message.getMessageDirection() == Message.MessageDirection.RECEIVE ? MESSAGE_TYPE_RECV_LOCATION : MESSAGE_TYPE_SENT_LOCATION; } else if (messageContent instanceof RichContentMessage) {// 图文消息 return message.getMessageDirection() == Message.MessageDirection.RECEIVE ? MESSAGE_TYPE_RECV_RICH_CONTENT : MESSAGE_TYPE_SENT_RICH_CONTENT; } else if (messageContent instanceof VoiceMessage) { // 语音消息 return message.getMessageDirection() == Message.MessageDirection.RECEIVE ? MESSAGE_TYPE_RECV_VOICE : MESSAGE_TYPE_SENT_VOICE; } else if (messageContent instanceof InformationNotificationMessage) {//灰色提示消息 return MESSAGE_TYPE_RECV_NTF_MSG; } return -1; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_read_receipt_detail); Intent intent = getIntent(); mMessage = intent.getParcelableExtra("message"); if (mMessage == null) { return; } if (mMessage != null) { mTextMessage = (TextMessage) mMessage.getContent(); } initViews(); LoadDialog.show(mContext); if (mMessage.getConversationType() == Conversation.ConversationType.GROUP) { getGroupInfoFromDB(); } setTitle(R.string.read_receipt_detail); }
MessageContent messageContent = message.getContent(); if (messageContent instanceof ContactNotificationMessage) { ContactNotificationMessage contactNotificationMessage = (ContactNotificationMessage) messageContent;