IM二期UI部分总结

2016-09-14  本文已影响16人  小鱼游儿

IM二期UI层的主要修改主要分为两大部分,一是逻辑层返回数据的处理,二是列表刷新的方式。在数据处理上,UI层封装了只在UI层用的MainMsgExt对象,实现了UI数据和业务数据的解耦;提供了一个MainMsg和MainMsgExt互相转换的工具类MainMsgTransferHelper;在列表刷新上,UI层采用了EventBus的异步接收数据并通过RxJAVA进行数据的操作和处理。在需要刷新列表时,摒弃了之前的notifydatachange的方式,做到了单条刷新。

MainMsg的扩展类MainMsgExt类

    @Override public boolean equals(Object o) {
        if (o == null) {
            return false;
        }
        if (!(o instanceof MainMsgExt)) {
            return false;
        }
        MainMsgExt mainMsgExt = (MainMsgExt) o;
        if (!TextUtils.isEmpty(msgChatID) && !TextUtils.isEmpty(mainMsgExt.getMsgChatID())) {
            return msgChatID.equals(mainMsgExt.getMsgChatID());
        } else if (!TextUtils.isEmpty(msgType) && !TextUtils.isEmpty(mainMsgExt.getMsgType())) {
            return msgType.equals(mainMsgExt.getMsgType());
        } else {
            return false;
        }
    }

    @Override public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((msgChatID == null) ? 0 : msgChatID.hashCode());
        result = prime * result + ((msgType == null) ? 0 : msgType.hashCode());
        return result;
    }

对象转换的工具类MainMsgTransferHelper

MessageList的改造

上一篇 下一篇

猜你喜欢

热点阅读