Android开发融云获取多个会话的总未读数
融云没有获取多个会话总未读数的api,只有获取单个会话的未读数。这样我只能通过递归获取。
private void secretLetterUnReadCount(final List<String> targetIds, final List<Integer> greetUnCount, final int unReadCount, final TextView unread){if(Utils.isNotNull(targetIds) && targetIds.size() > 0){RongIM.getInstance().getUnreadCount(Conversation.ConversationType.PRIVATE, targetIds.get(0), new RongIMClient.ResultCallback<Integer>() {@Overridepublic void onSuccess(Integer integer) {if(unReadCount == -1){greetUnCount.set(0,greetUnCount.get(0) + integer);}else {greetUnCount.set(1,greetUnCount.get(1) + 1);}targetIds.remove(0);secretLetterUnReadCount(targetIds, greetUnCount, unReadCount, tv_content, unread);}@Overridepublic void onError(RongIMClient.ErrorCode errorCode) {targetIds.remove(0);secretLetterUnReadCount(targetIds, greetUnCount, unReadCount, tv_content, unread);}});}else {if(unReadCount == -1){if(greetUnCount.get(0) > 0){secretLetterUnReadCount(SPNoCleanUtil.getSecretReceiveSet() , greetUnCount, greetUnCount.get(0), tv_content, unread);} else {unread.setVisibility(View.GONE);}}else {if(!(unReadCount + "").equals(unread.getText().toString())){unread.setText(unReadCount > 99 ? "99+" : unReadCount + "");}if(unread.getVisibility() != View.VISIBLE){unread.setVisibility(View.VISIBLE);}}}}
调用:
secretLetterUnReadCount(SPNoCleanUtil.getSecretReceiveSet(), secretLetterUnCount, -1, ((TextView)holder.getView(R.id.tv_unread_count)));
其中SPNoCleanUtil.getSecretReceiveSet()就是你的多个会话的集合它是List的,secretLetterUnCount默认是0,tv_unread_count就是你的TextView控件
还有问题可以评论或者私信我
