Android开发融云消息列表去掉不想显示的会话
我用的融云版本是
versionName "5.3.5.1"
去掉你不要的,得自己写去掉逻辑,首先继承BaseDataProcessor()
直接看下我的类:
class MyDataProcessor() : BaseDataProcessor<Conversation>() {
var removeTargetIds :MutableSet<String> = mutableSetOf()
private val supportedTypes = arrayOf(
Conversation.ConversationType.PRIVATE,
Conversation.ConversationType.SYSTEM
)
override fun supportedTypes(): Array<Conversation.ConversationType> {
return supportedTypes
}
override fun filtered(p0: MutableList<Conversation>): MutableList<Conversation> {
// 筛选时不不需要显示的去掉,发消息前和收到消息前添加到SP即可
removeTargetIds.clear()
if (Utils.isNotNull(SPNoCleanUtil.getSecretSendSet())) {
removeTargetIds.addAll(SPNoCleanUtil.getSecretSendSet())
}
for (index in p0.count()-1 downTo 0){
for (removeTargetId in removeTargetIds){
if (p0[index].targetId == removeTargetId){
p0.removeAt(index)
break
}
}
}
return p0
}
override fun isGathered(p0: Conversation.ConversationType?): Boolean {
return false
}
}
SPNoCleanUtil.getSecretSendSet()就是你要去掉的会话集合
那它怎么用呢
myDataProcessor = new MyDataProcessor();
RongConfigCenter.conversationListConfig().setDataProcessor(myDataProcessor);
//先判断Fragment是否Attach到Activity
if (isAdded()) {
mTransaction = getChildFragmentManager().beginTransaction();
mTransaction.replace(R.id.ll_content, initConversationList());
mTransaction.commitAllowingStateLoss();
}
public Fragment initConversationList() {
if (mListFragment == null) {
mListFragment = new ConversationListFragmentEx();
}
return mListFragment;
}
这个是关键:
RongConfigCenter.conversationListConfig().setDataProcessor(myDataProcessor);
好了,有问题的欢迎评论或者私信