0

我正在尝试为其中一个 Android 应用程序实现一个简单的聊天系统。我正在使用ChatKit,我想将自定义内容消息用作 PDF 或视频消息,所以这就是我所做的

1-我创建了一个扩展 MessageContentType 接口的 CustomMessageContentType 接口

public interface CustomMessageContentType extends MessageContentType {
interface PDF extends IMessage {
    @Nullable
    String getPDFUrl();
}


interface Video extends IMessage {
    @Nullable
    String getVideoUrl();


}

2- 我让 ChatMessage 实现了 IMessage、CustomMessageContentType.PDF、CustomMessageContentType.Video、MessageContentType

3-然后我让 ChatFragments 实现 ContentChecker 并像这样覆盖 hasContentFor 方法

override fun hasContentFor(message: ChatMessage?, type: Byte): Boolean {
     if (type == CONTENT_TYPE_PDF) {
       return message?.pdfUrl != null && message?.pdfUrl?.isNotEmpty()!!
    } else if (type == CONTENT_TYPE_VID) {
       return message?.videoUrl != null && message?.videoUrl?.isNotEmpty()!!
    } else {
        return false
    }
}

message?.pdfUrl 和 message?.videoUrl 总是为空

4-我注册了这样的自定义布局

 val holdersConfig = MessageHolders()
        .registerContentType(
            CONTENT_TYPE_PDF,
            CustomIncomingPdfMessageViewHolder::class.java,
            R.layout.item_custom_incoming_pdf_message,
            CustomOutcomingPdfMessageViewHolder::class.java,
            R.layout.item_custom_outcoming_pdf_message,
            this
        )
        .registerContentType(
            CONTENT_TYPE_VID,
            CustomIncomingVideoMessageViewHolder::class.java,
            R.layout.item_custom_incoming_video_message,
            CustomOutcomingVideoMessageViewHolder::class.java,
            R.layout.item_custom_outcoming_video_message,
            this
        )

5-最后,当消息来自 API 时,我检查了消息的类型

   if (attachments.endsWith(".pdf"){
        chatMessage = MessageFixture.getPDFMessage(e)
        chatMessagesList.add(chatMessage!!)
     } else if (attachments.endsWith(".mp4")) {
        chatMessage = MessageFixture.getVideoMessage(e)
        chatMessagesList.add(chatMessage!!)
  }
    adapter.addToEnd(chatMessagesList, true)

只有文本和图像消息正确显示,但 pdf 和视频消息没有出现,我在这里做错了吗?

4

0 回答 0