Skip to main content
CometChatConversations renders a scrollable list of recent conversations with real-time updates for new messages, typing indicators, read receipts, and user presence.

Where It Fits

CometChatConversations is a list component. It renders recent conversations and emits the selected Conversation via onItemClick. Wire it to CometChatMessageHeader, CometChatMessageList, and CometChatMessageComposer to build a standard chat layout.
activity_chat.xml
See the Conversation List + Message View guide for a complete layout.

Quick Start

Add to your layout XML:
Or programmatically:
Prerequisites: CometChat SDK initialized with CometChatUIKit.init(), a user logged in, and the UI Kit dependency added. Or in a Fragment:

Filtering Conversations

Pass a ConversationsRequest.ConversationsRequestBuilder to control what loads:

Filter Recipes

The default list already arrives pin-ordered, so setPinnedBy is only for a dedicated pinned list — "me" for the user’s own pins, "system" for admin/global pins, "system,me" for both. See Pin A Conversation (SDK).
Pass the builder object, not the result of .build(). The component calls .build() internally. Default page size is 30 with infinite scroll.

Actions and Events

Callback Methods

onItemClick

Fires when a conversation row is tapped. Primary navigation hook.
Replaces the default item-click behavior. Your custom lambda executes instead of the built-in navigation.

onItemLongClick

Fires when a conversation row is long-pressed. Use for additional actions like delete or select.

onBackPress

Fires when the user presses the back button in the toolbar.

onSearchClick

Fires when the user taps the search icon in the toolbar.

onSelection

Fires when conversations are selected/deselected in multi-select mode.

onError

Fires on internal errors (network failure, auth issue, SDK exception).

onLoad

Fires when the list is successfully fetched and loaded.

onEmpty

Fires when the list is empty after loading.

Global Events

The component emits events via CometChatEvents that can be subscribed to from anywhere:

SDK Events (Real-Time, Automatic)

The component listens to these SDK events internally. No manual setup needed.

Pinning Conversations

A pinned conversation sits at the top of the list and holds that position even as new messages arrive in other chats. The pin is private to the logged-in user — nobody else sees it — and it syncs to that user’s other devices. When the feature is enabled for your app, the long-press menu includes Pin conversation / Unpin conversation with no wiring needed: pinning applies immediately with a toast, unpinning asks for confirmation first, and a pinned row shows a pin indicator next to its timestamp.
Pin Conversation must be enabled for your app through the features.ux.conversations.pinned.enabled app setting in the CometChat Dashboard. Until it is, the option never renders, and a direct SDK call rejects with ERR_FEATURE_NOT_ACCESSIBLE. The UI Kit reads that setting itself at login and on every reconnect — there is no app code to write. Read it yourself with CometChatUIKit.isPinConversationEnabled() when you need to gate your own entry point.
setPinConversationOptionVisibility(View.GONE) (Compose: hidePinOption = true) hides the option on one particular list. It is ANDed with that app setting, so the option renders only when both allow it.

Reading pin state

The conversation list arrives already pin-ordered from the server — admin pins first, then the user’s own, then everything else — and each row carries its pin attributes. You do not need a separate fetch to render a pinned section. To render a pinned-only list, use the setPinnedBy filter shown in Filtering Conversations.
For pins made elsewhere, the Chat SDK exposes CometChat.ConversationListener with onConversationPinned / onConversationUnpinned. See Pin A Conversation (SDK) for those callbacks, the pin methods, and the per-user pin limit underneath.

Functionality


Custom View Slots

Leading View

Replace the avatar / left section.

Title View

Replace the name / title text.

Subtitle View

Replace the last message preview.

Trailing View

Replace the timestamp / badge / right section.

State Views

Overflow Menu



Common Patterns

Minimal list — hide all chrome

Users-only conversations

Custom date formatting


Advanced Methods

Programmatic Selection

ViewModel Access

See ViewModel & Data for ListOperations, state observation, and custom repositories.

Style

Define a custom style in themes.xml:
themes.xml

Style Properties

See Component Styling for the full reference.

Next Steps

Conversation List + Message View

Build a full chat layout with this component

Component Styling

Detailed styling reference with screenshots

ViewModel & Data

Custom ViewModels, repositories, and ListOperations

View Slots

Replace specific UI regions across all components