Android(Compose)

最近更新时间:2025-11-17 11:28:42

我的收藏

组件概述

ConversationList 是一个基于 Jetpack Compose 构建的会话列表组件,主要用于展示和管理用户的聊天会话。该组件提供了完整的会话列表功能,包括会话展示、交互操作等核心能力。
会话列表
会话操作



组件集成

ConversationList 是属于 TUIKit Compose 的一个组件,集成 TUIKit Compose 即可获取并使用 ConversationList,集成方法请参考文档 TUIKit Compose 里的集成步骤。

组件构成

ConversationList 组件对外仅暴露了会话列表的初始化方法,其他逻辑均封装在 ConversationList 中。

对外方法

方法名
参数
描述
ConversationList
modifier: Modifier
Jetpack Compose 中用来设置组件的样式、布局、行为和外观。
conversationListViewModelFactory: ConversationListViewModelFactory
创建组件内部 ConversationListViewModel 的工厂类。通常情况下,您无需手动创建,组件已提供默认实现。
config: ConversationActionConfigProtocol
初始化组件,设置会话操作菜单项,选填。
customActions: List<ConversationCustomAction>
初始化组件,设置自定义会话操作选项,选填。
onConversationClick: (ConversationInfo) -> Unit
设置会话点击回调。

基础用法

ConversationList 组件可直接初始化使用,需要传入 onConversationClick 回调。
参数名
类型
描述
onConversationClick
(ConversationInfo) -> Unit
会话点击回调,当用户点击某个会话 cell 时触发。
示例代码如下:
Box(
modifier = Modifier
.fillMaxSize()
.systemBarsPadding()
) {
ConversationList(onConversationClick = {
// 这里建议导航到聊天页面
})
}

自定义组件

您可以自定义会话列表的操作项。方法如下。

方式 1. 局部隐藏会话操作项

初始化 ConversationList 时设置 actions,表示当前在会话列表 cell 上展示哪些操作项:
Box {
ConversationList(
// 不展示 ClearHistory
config = ChatConversationActionConfig(
isSupportDelete = true,
isSupportPin = true,
isSupportClearHistory = false
)
) {
// 点击会话 cell 跳转
}
}
目前支持的菜单项开关操作
操作类型
描述
isSupportDelete
是否支持删除会话。
isSupportPin
是否支持置顶会话。
isSupportClearHistory
是否支持清空历史消息。

方式 2. 局部增加会话操作项

初始化 ConversationList 时传入 customActions,ConversationList 内部会在默认的 action 底部添加您增加的自定义选项:
参数名
类型
描述
customActions
List<ConversationCustomAction>
自定义会话操作,当用户点击会话操作菜单时展示。
示例代码如下:
Box {
ConversationList(
customActions = listOf(ConversationCustomAction(title = "Share") {
println("Share conversation: ${it.title}")
})
) {
// 处理点击事件
}
}

方式 3. 全局配置方式

通过 AppBuilderConfig 进行全局配置:
// 在应用启动时配置,不包含则不支持
AppBuilderConfig.conversationActionList = listOf(
ConversationAction.DELETE, // 支持删除
ConversationAction.PIN, // 支持置顶
ConversationAction.CLEAR_HISTORY // 清空会话消息
)

// 接下来再初始化 ConversationList,所有的 ConversationList 都会遵守上面 conversationActionList 的配置
ConversationList() {
// 这里可以导航到聊天页面
}
注意:
局部配置的优先级大于全局配置。
自定义效果如下图所示:
会话操作(默认选项)
会话操作(隐藏 Delete 选项)
会话操作(新增 Share 选项)