更新时间: 2021-03-08
# 功能描述
开发者在长按消息后出现更多选项,能够多选消息,可以自定义点击事件,SDK 默认实现多选消息转发和删除功能。
# 效果图


# 自定义多选
开发者想长按消息自定义多选消息功能, 需以下步骤:
- 创建
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
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
- 开发者需要自定义底部的点击事件,开发者实现 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MyConversationFragment
中重写 getMoreClickActions 方法,将点击事件设置到底部布局,底部点击事件的排序和返回的点击事件列表顺序一致.
/** * 获取点击更多时,底部的动作 * 开发者重写此方法,返回自定义的点击动作 * * @return 点击动作 */ @Override public List<IClickActions> getMoreClickActions() { return list; }
已复制
1
2
3
4
5
6
7
8
9
10
11
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18