4_3-带货场景-聊天室

1 功能概述

聊天室模块包括发言、点赞、历史记录、欢迎语等功能。聊天室模块在UI、交互、功能上,相较于其他模块,都会更复杂更庞大。因此设计、搭建、维护一个聊天室,也是一件较为费时费力的事情。我们推荐直接使用保利威封装好的聊天室模块,该部分代码完全开源,支持直接使用,以及二次开发。

2 使用演示

聊天室在带货场景分为直播首页PLVECLiveHomeFragment的聊天室和回放首页PLVECPalybackHomeFragment中的聊天室。

聊天室遵循MVP模式,因此方法之间的调用非常简单明了,在View中可以自由选择感兴趣的聊天室事件进行监听,并调用Presenter相关方法进行聊天室的操作。

以回放聊天室监听公告事件为例,代码如下:

// PLVECPalybackHomeFragment.java
private IPLVChatroomContract.IChatroomView chatroomView = new PLVAbsChatroomView() {
    // 实现了接受公告事件的接口方法,监听公告事件
    @Override
    public void onBulletinEvent(@NonNull PolyvBulletinVO bulletinVO) {
        super.onBulletinEvent(bulletinVO);
        // 在acceptBulletinMessage方法中处理监听接受到的公告事件,显示到界面当中
        acceptBulletinMessage(bulletinVO);
    }

    // 实现了接受移除公告事件的方法,监听移除公告事件
    @Override
    public void onRemoveBulletinEvent() {
        super.onRemoveBulletinEvent();
        // 移除界面中的公告
        removeBulletin();
    }
};

3 实现介绍

3.1 回放 - PLVECPalybackHomeFragment

带货场景下的回放聊天室,用于显示公告的更新。该类和聊天室mvp-presenter的通信,是通过该类中定义的聊天室mvp-view,当调用聊天室mvp-presneter的registerView方法后,聊天室mvp-presneter即可通知聊天室mvp-view的更新,同时聊天室mvp-view也能调用调用聊天室mvp-presenter的方法。定义聊天室mvp-view的示例代码:

// 聊天室presenter(定义在父类PLVECCommonHomeFragment当中)
protected IPLVChatroomContract.IChatroomPresenter chatroomPresenter;

// PLVECLiveHomeFragment.java
// 聊天室mvp-view
private IPLVChatroomContract.IChatroomView chatroomView = new PLVAbsChatroomView() {
    // 聊天室需要监听事件的抽象方法实现...
}

// 注册mvp-view
@Override
protected void registerChatroomView() {
    chatroomPresenter.registerView(chatroomView);

    //设置信息索引,需在chatroomPresenter.registerView后设置
    chatMessageAdapter.setMsgIndex(chatroomPresenter.getViewIndex(chatroomView));
}

3.2 直播 - PLVECLiveHomeFragment

带货场景下的直播聊天室,包含聊天信息列表、发送信息输入框、点赞布局、欢迎语、公告等元素。mvp-view和mvp-presenter之间的构建逻辑与回放相似,在直播聊天室中包含了更多直播情景所需监听的聊天室事件用例,详情请参考demo中PLVECLiveHomeFragment聊天室相关代码块。

Last updated