美文网首页Android开发
接入融云IM-已读的图标改为送达和已读的文本显示

接入融云IM-已读的图标改为送达和已读的文本显示

作者: 你的益达233 | 来源:发表于2022-05-06 16:49 被阅读0次

一、前言

融云im sdk默认的已读图标不好看也不满足需求,需求要文本显示,更直观。

二、效果图

QQ图片20220506163356.jpg QQ图片20220506163555.jpg

三、解决思路

  1. 开启已读未读功能。
  2. 会话界面里面自定义MessageListAdapter。
  3. 会话列表界面自定义PrivateConversationProvider。

四、参考示例代码:

MyMessageListAdapter.kt

class MyMessageListAdapter(listener: IViewProviderListener<UiMessage>) :
MessageListAdapter(listener) {

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    super.onBindViewHolder(holder, position)

    val listPosition = position - this.headersCount
    if (listPosition >= 0) {
        val uiMessage = getItem(listPosition)
        val isSender = uiMessage.message.messageDirection == Message.MessageDirection.SEND

        if (holder.getView<TextView>(R.id.app_read_receipt) != null){
            if (RongConfigCenter.conversationConfig().isShowReadReceipt(uiMessage.message.conversationType) && isSender
                && uiMessage.content !is CustomizeGiftsMessage) {
                when (uiMessage.message.sentStatus) {
                    Message.SentStatus.READ -> {
                        holder.setText(
                            R.id.app_read_receipt,
                            holder.context.getString(R.string.read)
                        )
                        holder.setVisible(R.id.app_read_receipt, true)
                    }
                    Message.SentStatus.SENT -> {
                        holder.setText(
                            R.id.app_read_receipt,
                            holder.context.getString(R.string.unread)
                        )
                        holder.setVisible(R.id.app_read_receipt, true)
                    }
                    else -> {
                        holder.setVisible(R.id.app_read_receipt, false)
                    }
                }
            } else {
                holder.setVisible(R.id.app_read_receipt, false)
            }
        }

        //隐藏原来的已读控件
        if (holder.getView<TextView>(R.id.rc_read_receipt) != null){
            holder.setVisible(R.id.rc_read_receipt, false)
        }

    }
}}

MyPrivateConversationProvider.class

public class MyPrivateConversationProvider extends BaseConversationProvider {
public MyPrivateConversationProvider() {
}

public boolean isItemViewType(BaseUiConversation item) {
    return Conversation.ConversationType.PRIVATE.equals(item.mCore.getConversationType());
}

public void bindViewHolder(ViewHolder holder, BaseUiConversation baseUiConversation, int position, List<BaseUiConversation> list, IViewProviderListener<BaseUiConversation> listener) {
    super.bindViewHolder(holder, baseUiConversation, position, list, listener);
    //不用它们的已读未读,改为我们的,隐藏它们的holder.setVisible(R.id.rc_conversation_read_receipt,false);
    LogUtils.INSTANCE.o("bindViewHolder1",baseUiConversation.mCore);

    if (!baseUiConversation.mCore.getTargetId().contains(ImType.MYCUS) && baseUiConversation.mCore.getSenderUserId().equals(SPUtil.getTargetId())) {
        if (baseUiConversation.mCore.getSentStatus() == Message.SentStatus.READ) {
            holder.setText(
                    R.id.app_conversation_read_receipt, holder.getContext().getString(
                            R.string.read));
            holder.setVisible(R.id.app_conversation_read_receipt, true);

        } else if (baseUiConversation.mCore.getSentStatus() == Message.SentStatus.SENT) {
            holder.setText(
                    R.id.app_conversation_read_receipt, holder.getContext().getString(
                            R.string.unread));
            holder.setVisible(R.id.app_conversation_read_receipt, true);

        } else {
            holder.setVisible(R.id.app_conversation_read_receipt, false);
        }

注:记得在相应的item布局加上用来显示已读未读的文本控件。
还有问题可私信我

相关文章

  • 接入融云IM-已读的图标改为送达和已读的文本显示

    一、前言 融云im sdk默认的已读图标不好看也不满足需求,需求要文本显示,更直观。 二、效果图 三、解决思路 开...

  • swift融云会话页面设置消息“已读”和“未读”

    1、融云会话页面,已读消息默认是显示图标“对勾”,有时候需求让显示成“已读”和“未读”,如何实现自定义呢?下面我们...

  • 融云设置已读,未读消息标识

    融云设置已读,未读消息标识 需求:会话列表,以及会话界面发出去的消息前面加上已读,未读的标识 官方给的解决方案 1...

  • 物资已送达

    今年的第二次赋码,这次真的是全小区都赋码,没在这里住的人也一样,今天早上上学前临时通知封小区,然后孩子们没上...

  • 已读

    明朝那些事儿_当年明月,与时间做朋友_李笑来,在难搞的日子笑出声来_大鹏,幸福了吗?_白岩松,在痛苦的世界中尽力而...

  • 已读

    1️《围城》 9分,钱老的嘴真的又毒辣又刻薄又正中痛点,看这本书我除了感慨辛楣和鸿渐的基情,就只去注意,大师就是大...

  • 已读

    因为有已读功能,看到给你发的信息,显示已读,内心还是一惊。。。 我知道,那只是强迫症为了点开红点的随手操作。。。 ...

  • 已读

    诚然人类的感情并不相通。我只能不停的给自己加戏自我感动。姑且当做自己看懂了他想表达的吧。 彼之梦,花开否 我的梦,...

  • “已读”

    我觉得“有回应”这件事太重要了,在我给你发了一堆消息后你能一条一条的认真回复,分享给你的搞笑视频你会看过后和我一样...

  • “笑出腹肌”的QQ自动回复,句句都是“蒂花之秀”,度娘都搜不到

    1.您的消息已送达,对方已读,就是不回。 这句话真的非常的欠打了,可以称之为是蒂花之秀,这样的q自动回复,虽然看起...

网友评论

    本文标题:接入融云IM-已读的图标改为送达和已读的文本显示

    本文链接:https://www.haomeiwen.com/subject/wdrzyrtx.html