更新时间: 2021-04-16

# 会话列表布局文件

开发者可通过修改布局文件修改背景或字体颜色等。

布局 位置 说明
rc_conversationlist_fragment.xml kit 下的 res/layout 会话列表布局文件
rc_conversationlist_item.xml kit 下的 res/layout 会话列表各个 item 对应的布局文件

使用 MAVEN 集成方式, 则可把要修改的布局文件拷贝到主工程下, 然后进行修改. 工程优先加载主工程中的资源.

# 会话展示模板自定义

IMKit 中可以根据不同场景定义不同的会话展示模板。内置会话模板如下表所示:

# IMkit 内置会话模板
提供者名称 类名 适用场景
缺省会话展示模板 BaseConversationProvider.java 会话模板基类,缺省模板, 没有匹配到其它模板的会话将以此模板展示。
私聊会话展示模板 PrivateConversationProvider.java 私聊会话
空会话列表展示模板 ConversationListEmptyProvider.java 会话列表没有数据时的展示模板
# 自定义会话模板
  1. 创建 CustomConversationProvider 继承 BaseConversationProvider

  2. 复写 isItemViewType() 和其它需要自定义的方法。

    public class CustomConversationProvider extends BaseConversationProvider {
        @Override
        public boolean isItemViewType(BaseUiConversation item) {
            //根据业务需要,判断 item 是该模板需要处理的会话时,返回 true, 否则返回 false
            //此处以自定义私聊会话模板为例
            return item.mCore.getConversationType().equals(Conversation.ConversationType.PRIVATE);
        }
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            //根据业务需要,自定义处理
            return super.onCreateViewHolder(parent, viewType);
        }
    
        @Override
        public void bindViewHolder(ViewHolder holder, BaseUiConversation uiConversation, int position, List<BaseUiConversation> list, IViewProviderListener<BaseUiConversation> listener) {
            //根据业务需要,自定义处理
            super.bindViewHolder(holder, uiConversation, position, list, listener);
        }
    }
    
    已复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
  3. 注册自定义模板

    ProviderManager<BaseUiConversation> providerManager = RongConfigCenter.conversationListConfig().getProviderManager(); //获取会话模板管理器
    providerManager.replaceProvider(PrivateConversationProvider.class, new CustomConversationProvider()); //用自定义模板替换 SDK 原有模板
    
    已复制
    1
    2
# 会话列表添加头、尾、空布局

该功能始于:IMKit 5.1.0

可在会话列表添加自定义布局(头部,尾部,数据空) 1.在 activity 找到 ConversationListFragment 2.调用 ConversationListFragment 的 addHeaderView(),addFooterView(),setEmptyView() 方法,设置布局

/**
  * @param view 自定义列表 header view
  */
 public void addHeaderView(View view) {
     mAdapter.addHeaderView(view);
 }

 /**
  * @param view 自定义列表 footer view
  */
 public void addFooterView(View view) {
     mAdapter.addFootView(view);
 }

 /**
  * @param view 自定义列表 空数据 view
  */
 public void setEmptyView(View view) {
     mAdapter.setEmptyView(view);
 }

 /**
  * @param emptyId 自定义列表 空数据的 LayoutId
  */
 public void setEmptyView(@LayoutRes int emptyId) {
     mAdapter.setEmptyView(emptyId);
 }
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助