Skip to main content
CometChatThreadHeader renders the parent message bubble and reply count for a threaded conversation. It requires a parent message to display.

Where It Fits

CometChatThreadHeader is a header component for threaded message views. Wire it above a CometChatMessageList and CometChatMessageComposer to build a complete threaded conversation layout.
activity_thread.xml
<com.cometchat.uikit.kotlin.presentation.threadheader.ui.CometChatThreadHeader
    android:id="@+id/thread_header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
val threadHeader = findViewById<CometChatThreadHeader>(R.id.thread_header)
threadHeader.setParentMessage(parentMessage)

Quick Start

Add to your layout XML:
<com.cometchat.uikit.kotlin.presentation.threadheader.ui.CometChatThreadHeader
    android:id="@+id/thread_header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
Set the parent message — this is required:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_thread)

    val threadHeader = findViewById<CometChatThreadHeader>(R.id.thread_header)
    threadHeader.setParentMessage(baseMessage)
}
Prerequisites: CometChat SDK initialized with CometChatUIKit.init(), a user logged in, and the UI Kit dependency added.

Actions and Events

Callback Methods

CometChatThreadHeader is a display-only header. It does not expose component-specific callbacks like setOnItemClick or setOnError.

SDK Events (Real-Time, Automatic)

The component listens to SDK events internally via its ViewModel. No manual setup needed.
SDK ListenerInternal behavior
Message editedUpdates the parent message bubble
Message deletedUpdates the parent message bubble
Reply count changedUpdates the reply count indicator

Functionality

Method (Kotlin XML)Compose ParameterDescription
setParentMessage(message)parentMessage = messageSet the parent message (required)
setUser(user)user = userSet the user context
setGroup(group)group = groupSet the group context
setReactionVisibility(View.GONE)hideReactions = trueToggle reactions on parent bubble
setAvatarVisibility(View.GONE)hideAvatar = trueToggle avatar visibility
setReceiptsVisibility(View.GONE)hideReceipts = trueToggle read receipts
setReplyCountVisibility(View.GONE)hideReplyCount = trueToggle reply count text

Style

Define a custom style in themes.xml:
themes.xml
<style name="CustomOutgoingMessageBubbleStyle" parent="CometChatOutgoingMessageBubbleStyle">
    <item name="cometchatMessageBubbleBackgroundColor">#F76808</item>
</style>

<style name="CustomIncomingMessageBubbleStyle" parent="CometChatIncomingMessageBubbleStyle">
    <item name="cometchatMessageBubbleBackgroundColor">#F76808</item>
</style>

<style name="CustomThreadHeaderStyle" parent="CometChatThreadHeaderStyle">
    <item name="cometchatThreadHeaderOutgoingMessageBubbleStyle">@style/CustomOutgoingMessageBubbleStyle</item>
    <item name="cometchatThreadHeaderIncomingMessageBubbleStyle">@style/CustomIncomingMessageBubbleStyle</item>
    <item name="cometchatThreadHeaderBackgroundColor">#FEEDE1</item>
    <item name="cometchatThreadHeaderReplyCountTextColor">#F76808</item>
    <item name="cometchatThreadHeaderReplyCountBackgroundColor">#FEEDE1</item>
</style>
threadHeader.setStyle(R.style.CustomThreadHeaderStyle)
See Component Styling for the full reference.

ViewModel

val viewModel = ViewModelProvider(this)
    .get(CometChatThreadHeaderViewModel::class.java)
threadHeader.setViewModel(viewModel)
See ViewModel & Data for state observation and custom repositories.

Next Steps

Message List

Display messages in a conversation

Message Header

Display user/group info in the toolbar

Message Composer

Rich input for sending messages

Conversations

Browse recent conversations