会话列表过滤指定人的会话

会话列表过滤指定人的会话
发布时间: 2018-03-15 16:36

回答:

#会话列表如何过滤会话

  1. 继承ConversationListFragment

  2. 重载public void onEventMainThread(Message message)public void getConversationList(ConversationType[] conversationTypes, final IHistoryDataResultCallback<List<Conversation>> callback)

  3. 在上面重载的两个方法里面,根据targteId过滤会话,参考代码如下

   public void onEventMainThread(Message message) {

        ConversationType conversationType = message.getConversationType();
        String targetId = message.getTargetId();

        if (targetId.equals("你想过滤的targetId")){
            return;
        }else {
            super.onEventMainThread(message);
        }
/**
     * 开发者可以重写此方法,来填充自定义数据到会话列表界面。
     * 如果需要同时显示 sdk 中默认会话列表数据,在重写时可使用 super.getConversationList()。反之,不需要调用 super 方法。
     * <p>
     * 注意:通过 callback 返回的数据要保证在 UI 线程返回。
     *
     * @param conversationTypes 当前会话列表已配置显示的会话类型。
     */
    public void getConversationList(ConversationType[] conversationTypes, final IHistoryDataResultCallback<List<Conversation>> callback) {
        RongIMClient.getInstance().getConversationList(new RongIMClient.ResultCallback<List<Conversation>>() {
            @Override
            public void onSuccess(List<Conversation> conversations) {
                if (callback != null) {
                    List<Conversation> resultConversations = new ArrayList<>();
                    for (Conversation conversation : conversations) {
                        if (!conversation.getTargetId().equals("你想过滤的id")){
                            resultConversations.add(conversation);
                        }

                    }
                    callback.onResult(resultConversations);
                }
            }

            @Override
            public void onError(RongIMClient.ErrorCode e) {
                if (callback != null) {
                    callback.onError();
                }
            }
        }, conversationTypes);
    }

#会话列表如何过滤会话

  1. 继承ConversationListFragment

  2. 重载public void onEventMainThread(Message message), public void getConversationList(ConversationType[] conversationTypes, final IHistoryDataResultCallback<List<Conversation>> callback)public boolean shouldUpdateConversation(Message message, int left)

  3. 在上面重载的两个方法里面,根据targteId过滤会话,参考代码如下

   public void onEventMainThread(Message message) {

        ConversationType conversationType = message.getConversationType();
        String targetId = message.getTargetId();

        if (targetId.equals("你想过滤的targetId")){
            return;
        }else {
            super.onEventMainThread(message);
        }
/**
     * 开发者可以重写此方法,来填充自定义数据到会话列表界面。
     * 如果需要同时显示 sdk 中默认会话列表数据,在重写时可使用 super.getConversationList()。反之,不需要调用 super 方法。
     * <p>
     * 注意:通过 callback 返回的数据要保证在 UI 线程返回。
     *
     * @param conversationTypes 当前会话列表已配置显示的会话类型。
     */
    public void getConversationList(ConversationType[] conversationTypes, final IHistoryDataResultCallback<List<Conversation>> callback) {
        RongIMClient.getInstance().getConversationList(new RongIMClient.ResultCallback<List<Conversation>>() {
            @Override
            public void onSuccess(List<Conversation> conversations) {
                if (callback != null) {
                    List<Conversation> resultConversations = new ArrayList<>();
                    for (Conversation conversation : conversations) {
                        if (!conversation.getTargetId().equals("你想过滤的id")){
                            resultConversations.add(conversation);
                        }

                    }
                    callback.onResult(resultConversations);
                }
            }

            @Override
            public void onError(RongIMClient.ErrorCode e) {
                if (callback != null) {
                    callback.onError();
                }
            }
        }, conversationTypes);
    }
   /**
     * 接收到消息,先调用此方法,检查是否可以更新消息对应的会话。
     * 如果可以更新,则返回 true,否则返回 false。
     * 注意:开发者可以重写此方法,来控制是否更新对应的会话。
     *
     * @param message 接收到的消息体。
     * @param left    剩余的消息数量。
     * @return 根据返回值确定是否更新对应会话信息。
     */
    public boolean shouldUpdateConversation(Message message, int left) {
        String targetId = message.getTargetId();
        if (targetId.equals("你想过滤的targetId")){
            return false;
        }
        return true;
    }
我对此仍有疑问!继续追问