/** 获取图片消息列表 */ private void getImageList() { for (int i = msgObjectList.size() - 1; i >= 0; --i) { Object item = msgObjectList.get(i); if (item instanceof ImageMessage) { ImageMessage.addToImageMessageList((ImageMessage) item); } } }
/** 对于混合消息的特殊处理 */ public void updateItemState(final MessageEntity messageEntity) { long dbId = messageEntity.getId(); int msgId = messageEntity.getMsgId(); int len = msgObjectList.size(); for (int index = len - 1; index > 0; index--) { Object object = msgObjectList.get(index); if (object instanceof MessageEntity) { MessageEntity entity = (MessageEntity) object; if (object instanceof ImageMessage) { ImageMessage.addToImageMessageList((ImageMessage) object); } if (entity.getId() == dbId && entity.getMsgId() == msgId) { msgObjectList.set(index, messageEntity); break; } } } 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(); }