/** 下拉载入历史消息,从最上面开始添加 */ public void loadHistoryList(final List<MessageEntity> historyList) { logger.d("#messageAdapter#loadHistoryList"); if (null == historyList || historyList.size() <= 0) { return; } Collections.sort(historyList, new MessageTimeComparator()); ArrayList<Object> chatList = new ArrayList<>(); int preTime = 0; int nextTime = 0; for (MessageEntity msg : historyList) { if (msg.getDisplayType() == DBConstant.MSG_TYPE_SINGLE_TEXT) { if (isMsgGif(msg)) { msg.setGIfEmo(true); } else { msg.setGIfEmo(false); } } nextTime = msg.getCreated(); boolean needTimeBubble = DateUtil.needDisplayTime(preTime, nextTime); if (needTimeBubble) { Integer in = nextTime; chatList.add(in); } preTime = nextTime; if (msg.getDisplayType() == DBConstant.SHOW_MIX_TEXT) { MixMessage mixMessage = (MixMessage) msg; chatList.addAll(mixMessage.getMsgList()); } else { chatList.add(msg); } } // 如果是历史消息,从头开始加 msgObjectList.addAll(0, chatList); getImageList(); logger.d("#messageAdapter#addItem"); notifyDataSetChanged(); }
/** ----------------------添加历史消息----------------- */ public void addItem(final MessageEntity msg) { if (msg.getDisplayType() == DBConstant.MSG_TYPE_SINGLE_TEXT) { if (isMsgGif(msg)) { msg.setGIfEmo(true); } else { msg.setGIfEmo(false); } } int nextTime = msg.getCreated(); if (getCount() > 0) { Object object = msgObjectList.get(getCount() - 1); if (object instanceof MessageEntity) { int preTime = ((MessageEntity) object).getCreated(); boolean needTime = DateUtil.needDisplayTime(preTime, nextTime); if (needTime) { Integer in = nextTime; msgObjectList.add(in); } } } else { Integer in = msg.getCreated(); msgObjectList.add(in); } /** 消息的判断 */ if (msg.getDisplayType() == DBConstant.SHOW_MIX_TEXT) { MixMessage mixMessage = (MixMessage) msg; msgObjectList.addAll(mixMessage.getMsgList()); } else { msgObjectList.add(msg); } if (msg instanceof ImageMessage) { ImageMessage.addToImageMessageList((ImageMessage) msg); } logger.d("#messageAdapter#addItem"); notifyDataSetChanged(); }