全部文档

更新时间: 2021-03-08

# 功能描述

开发者在长按消息后出现更多选项,能够多选消息,可以自定义点击事件,SDK 默认实现多选消息转发和删除功能。

# 效果图


# 自定义多选

开发者想长按消息自定义多选消息功能, 需以下步骤:

  1. 创建 MyConversationFragment 继承 ConversationFragment,重写下面的方法, 设置长按显示多选按钮.
class MyConversationFragment extends ConversationFragment {
    @Override
    public boolean showMoreClickItem() {
        //是否在长按时显示更多选项
        //return true 显示,false 不显示
        return true;
    }
}


2. 创建 `MyMessageListAdapter` 继承 **MessageListAdapter**,重写下面的方法判断某条消息能否被选中。

```java 
class MyMessageListAdapter extends MessageListAdapter {

    /**
     * 多选状态时是否显示checkBox,开发者需要重写此方法,根据消息类型判断是否显示。
     *
     * @param message 消息类型
     * @return true 显示,false 不显示
     */
    @Override
    protected boolean allowShowCheckButton(Message message){
        return true;
    }
}

已复制
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
  1. 开发者需要自定义底部的点击事件,开发者实现 IClickActions,实现自己的点击事件
public interface IClickActions {

    /**
     * 获取点击按钮的图标
     *
     * @param context
     * @return 图片的Drawable, 如需高亮或者置灰,则返回类型为selector, 分别显示enable或者disable状态下的drawable
     */
    Drawable obtainDrawable(Context context);

    /**
     * 图标按钮点击事件
     *
     * @param curFragment
     */
    void onClick(Fragment curFragment);
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  1. MyConversationFragment 中重写 getMoreClickActions 方法,将点击事件设置到底部布局,底部点击事件的排序和返回的点击事件列表顺序一致.
/**
 * 获取点击更多时,底部的动作
 * 开发者重写此方法,返回自定义的点击动作
 *
 * @return 点击动作
 */
 @Override
public List<IClickActions> getMoreClickActions() {
    return list;
}
    
已复制
1
2
3
4
5
6
7
8
9
10
11

5、根据逻辑进入或退出多选状态.

进入多选状态

通过调用 ConversationFragment 对象的下面方法即可进入多选状态, 会话界面显示底部事件按钮.

参数 类型 必填 说明 最低版本
message UIMessage 所选择的消息对象
fragment.setMoreActionState(UIMessage message) 
已复制
1

关闭多选状态

通过调用 ConversationFragment 对象的下面方法即可退出多选状态, 会话界面显示底部事件按钮

fragment.resetMoreActionState() 
已复制
1

获取选中的信息

 List<io.rong.imlib.model.Message> messages = fragment.getCheckedMessages() 
已复制
1

# 多选监听

需要调用 ConversationFragment 的 setMoreActionStateListener 方法并重写相关方法。

fragment.setMoreActionStateListener(new OnMoreActionStateListener {
    /**
     * 进入多选状态
     */
    @Override
    public void onShownMoreActionLayout() {

    }

    /**
     * 退出多选状态
     */
    @Override
    public void onHidenMoreActionLayout() {

    }
};

已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

文档是否解决您的问题 ?

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