public void getRemoteHistoryMessages() { //消息中的 sentTime;第一次可传 0,获取最新 count 条。 long dateTime = 0; if (mData.size() > 0) { dateTime = mData.get(0).getSentTime(); } else { dateTime = 0; } RongIMClient.getInstance().getRemoteHistoryMessages(mConversationType, mSessionId, dateTime, mMessageCount, new RongIMClient.ResultCallback<List<Message>>() { @Override public void onSuccess(List<Message> messages) { saveHistoryMsg(messages); } @Override public void onError(RongIMClient.ErrorCode errorCode) { loadMessageError(errorCode); } }); }
private void setTime(LQRViewHolderForRecyclerView helper, Message item, int position) { boolean isSend = item.getMessageDirection() == Message.MessageDirection.SEND ? true : false; long msgTime = isSend ? item.getSentTime() : item.getReceivedTime(); if (position > 0) { Message preMsg = mData.get(position - 1); boolean isSendForPreMsg = preMsg.getMessageDirection() == Message.MessageDirection.SEND ? true : false; long preMsgTime = isSendForPreMsg ? preMsg.getSentTime() : preMsg.getReceivedTime(); if (msgTime - preMsgTime > (5 * 60 * 1000)) { helper.setViewVisibility(R.id.tvTime, View.VISIBLE).setText(R.id.tvTime, TimeUtils.getMsgFormatTime(msgTime)); } else { helper.setViewVisibility(R.id.tvTime, View.GONE); } } else { helper.setViewVisibility(R.id.tvTime, View.VISIBLE).setText(R.id.tvTime, TimeUtils.getMsgFormatTime(msgTime)); } }
/** * 判断是否需要展示时间 * * @param sentTime * @param position * @return true 代表显示时间 ,false 代表隐藏时间 */ private boolean isShowTime(long sentTime, int position) { if (position - 1 < 0) { // 上一条消息 return false; } long lastTime = getItem(position - 1).getSentTime();//上一条消息的发送时间 if (sentTime - lastTime > DEAULT_TIME) { return true; } return false; }
/** * 设置时间间隔是否需要显示 * * @param message * @param viewHoder * @param position */ private void handleTime(Message message, ViewHoder viewHoder, int position) { viewHoder.time.setVisibility(isShowTime(message.getSentTime(), position) ? View.VISIBLE : View.GONE); if (View.VISIBLE == viewHoder.time.getVisibility()) { viewHoder.time.setText(TimeFormatUtils.friendlyFormat(message.getSentTime())); } }
@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; } }
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Object object = parent.getItemAtPosition(position); if (object instanceof Message) { Message message = (Message)object; Conversation conversation = mResult.getConversation(); RongIM.getInstance().startConversation(SealSearchChattingDetailActivity.this, conversation.getConversationType(), conversation.getTargetId(), mResult.getTitle(),mAdapterMessages.get(position).getSentTime()); } } });
private void loadMoreChattingRecords() { Conversation conversation = mResult.getConversation(); RongIMClient.getInstance().searchMessages(conversation.getConversationType(), conversation.getTargetId(), mFilterString, 50, mLastMessage.getSentTime(), new RongIMClient.ResultCallback<List<Message>>() { @Override public void onSuccess(List<Message> messages) { mCompleteFlag = true; mMessageShowCount = mMessageShowCount + messages.size(); if (mMatchCount >= mMessageShowCount) { mAdapterMessages.addAll(messages); mAdapter.notifyDataSetChanged(); } if (messages.size() > 0) { mLastMessage = messages.get(messages.size() - 1); } } @Override public void onError(RongIMClient.ErrorCode e) { } }); }
tv_time.setText(RongDateUtils.getConversationFormatDate(mMessage.getSentTime(), this));