消息多选

提示

从 SDK 2.9.0 版本开始,支持会话中长按消息后,显示消息多选功能,可以自定义点击事件。

1、长按消息出现更多选项,能够多选消息,需要继承ConversationFragment,重写 showMoreClickItem 方法:

    /**
     * 是否在长按时显示更多选项
     *
     * @return true 显示,false 不显示。
     */
    public boolean showMoreClickItem()
2、进入多选状态后,继承 MessageListAdapter,重写 allowShowCheckButton 方法判断某条消息能否被选中。

    /**
     * 多选状态时是否显示checkBox,开发者需要重写此方法,根据消息类型判断是否显示。
     *
     * @param message 消息类型
     * @return true 显示,false 不显示
     */
    protected boolean allowShowCheckButton(Message message)
3、自定义底部的点击事件,实现 IClickActions,实现点击事件

public interface IClickActions {

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

    /**
     * 图标按钮点击事件
     *
     * @param curFragment
     */
    void onClick(Fragment curFragment);
}
4、最后,继承 ConversationFragment ,重写 getMoreClickActions 方法,将开发者自己的点击事件设置到底部布局,底部点击事件的排序和返回的点击事件列表顺序一致。

    /**
     * 获取点击更多时,底部的动作
     * 开发者重写此方法,返回自定义的点击动作
     *
     * @return 点击动作
     */
    public List<IClickActions> getMoreClickActions() {

5、ConversationFragment 提供公开方法来设置进入多选状态和退出多选状态以及获取选中的消息:

/**
 * 显示多选状态
 *
 * @param message 当前选中的消息
 */
public void setMoreActionState(UIMessage message)

/**
  * 重置多选状态,隐藏多选框,隐藏底部点击事件
  */
 public void resetMoreActionState()

/**
  * 获取选中的消息
  *
  * @return 选中的消息列表
  */
 public List<io.rong.imlib.model.Message> getCheckedMessages()

调用 ConversationFragment 的 setMoreActionStateListener 并重写相关方法,可设置进入和退出多选状态的监听。

public interface OnMoreActionStateListener {
    /**
     * 进入多选状态
     */
    void onShownMoreActionLayout();

    /**
     * 退出多选状态
     */
    void onHidenMoreActionLayout();
}