集成会话列表界面
更新时间: 2025/09/11 14:15:56
网易云信 IM UIKit 支持本地会话组件(localconvesationkit-ui
)和云端会话组件(convesationkit-ui
),在其他组件中需要根据您当前使用到的会话列表组件来进行对应的功能。IM UIKit 提供基于 Activity 和基于 Fragment 两种会话列表界面的集成方式。两种集成方式都支持个性化定制界面 UI。
会话列表界面 UI 个性化定制的的相关说明,请参考 自定义会话列表界面 UI。
效果展示
会话列表是即时通讯应用中的一个重要功能模块,用于展示用户的所有聊天对话列表,包括单聊和群聊。它帮助用户快速找到和切换不同的聊天对象或群组,方便管理和查看历史消息记录。效果如下图所示:

前提条件
根据本文操作前,请确保您已经完成以下操作:
-
实现 登录。
-
明确使用本地会话还是云端会话。如果需要使用云端会话,需要您在使用云端会话列表组件之前,打开该功能开关,在您完成初始化之后,需要在相应代码设置(Application 或 Activity 均可)
-
打开云端会话开关
Java
//默认使用本地会话,设置为 true 后代表打开云端会话 SDKOptions.enableV2CloudConversation = true;
-
示例代码(Appliation中实现)
Java
public class IMApplication extends MultiDexApplication { private static final String TAG = "IMApplication"; @Override public void onCreate() { SDKOptions options = new SDKOptions(); options.appKey = "App Key"; //开启云端会话功能 //options.enableV2CloudConversation = true; //设置语言,localeStr 值 "zh" 代表中文,"en" 代表英文 String localeStr = AppLanguageConfig.getInstance().getAppLanguage(this); IMKitClient.init(this, options, new Locale(localeStr)); //如果使用地图消息组件 locationkit,则需要初始化该组件 // 地图组件初始化 LocationConfig locationConfig = new LocationConfig(); // 高德地图 web API KEY,用于位置消息生成图片(高德提供服务,需要您自己创建 web 服务) // 位置消息展示方案,参考高德静态地图文档,文档地图如下 locationConfig.aMapWebServerKey = "web api key"; LocationKitClient.init(this, locationConfig); } }
-
实现方法
集成方式 |
说明 |
---|---|
基于 Activity | 使用 IM UIKit 提供的默认会话列表。界面支持一个标题栏和一个会话列表。在 IM UIKit 内部已经为该界面定义了跳转路径:其他界面需要跳转到会话列表时,将跳转到默认的会话列表 Activity。 |
基于 Fragment | 在应用 Activity 中集成 IM UIKit 提供的会话列表 Fragment。 |
方式一:基于 Activity
IM UIKit 提供默认会话列表 Activity 的类名为 LocalConversationActivity
。
您可以使用 IM UIKit 提供的路由 XKitRouter
跳转到默认会话列表界面 LocalConversationActivity
。
-
XKitRouter 原型
Java
XKitRouter.withKey(RouterConstant.PATH_CONVERSATION_PAGE).withContext(context).navigate();
-
XKitRouter 参数说明
参数 类型说明 RouterConstant.PATH_CONVERSATION_PAGE
String IM UIKit 默认注册的会话列表界面地址 context
Context Activity 上下文
IM UIKit 提供默认会话列表 Activity 的类名为 ConversationActivity
。
您可以使用 IM UIKit 提供的路由 XKitRouter
跳转到默认会话列表界面 ConversationActivity
。
-
XKitRouter 原型
Java
XKitRouter.withKey(RouterConstant.PATH_CONVERSATION_PAGE).withContext(context).navigate();
-
XKitRouter 参数说明
参数 类型说明 RouterConstant.PATH_CONVERSATION_PAGE
String IM UIKit 默认注册的会话列表界面地址 context
Context Activity 上下文
方式二:基于 Fragment
:::
IM UIKit 提供会话列表 Fragment 的类名为 LocalConversationFragment
。您可以在应用的 Activity 中集成 LocalConversationFragment
从而构建您的会话列表界面。
IM UIKit 提供会话列表 Fragment 的类名为 ConversationFragment
。您可以在应用的 Activity 中集成 ConversationFragment
从而构建您的会话列表界面。
本节假设您的应用的 Acitiviy 为 MyConversationActivity
,进行相应说明。
步骤 1:创建 Activity 的布局文件
创建您的应用 Activity 的布局文件 my_conversation_activity.xml
。
示例代码如下:
Java<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:ignore="MissingDefaultResource">
//用来放置 Fragment
<FrameLayout
android:id="@+id/conversation_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
步骤 2:创建 Activity
本步骤以应用的 Acitivity 采用视图绑定(ViewBinding)模式为例进行说明。
示例代码如下:
Javapublic class MyConversationActivity extends AppCompatActivity {
private MyConversationActivityBinding viewBinding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewBinding = MyConversationActivityBinding.inflate(LayoutInflater.from(this));
//设置 Activity 界面布局,非 ViewBinding 采用 setContentView(R.layout.conversation_activity);
setContentView(viewBinding.getRoot());
FragmentManager fragmentManager = getSupportFragmentManager();
//创建 ConversationFragment
LocalConversationFragment fragment = new LocalConversationFragment();
//将 ConversationFragment 加载到 Activity 中
fragmentManager
.beginTransaction()
.add(R.id.conversation_container, fragment)
.commit();
}
}
Javapublic class MyConversationActivity extends AppCompatActivity {
private MyConversationActivityBinding viewBinding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewBinding = MyConversationActivityBinding.inflate(LayoutInflater.from(this));
//设置 Activity 界面布局,非 ViewBinding 采用 setContentView(R.layout.conversation_activity);
setContentView(viewBinding.getRoot());
FragmentManager fragmentManager = getSupportFragmentManager();
//创建 ConversationFragment
ConversationFragment fragment = new ConversationFragment();
//将 ConversationFragment 加载到 Activity 中
fragmentManager
.beginTransaction()
.add(R.id.conversation_container, fragment)
.commit();
}
}
步骤 3:声明 Activity
在 AndroidManfest.xml
中声明 Activity。
示例代码如下:
Java<activity
android:name=".activity.MyConversationActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize">
</activity>
步骤 4:注册会话列表界面
调用 XKitRouter
中的会话列表注册方法 registerRouter
,同时进行相应配置(参考本步骤的示例代码),将 IM UIKit 的默认会话列表界面替换为您的会话列表 Activity 界面。
-
方法原型
Java
XKitRouter.registerRouter(path,activity);
-
参数说明
参数 类型 说明 path
String Activity 的跳转地址 activity
Class 跳转的目标 Activity -
示例代码
Java
XKitRouter.registerRouter(RouterConstant.PATH_CONVERSATION_PAGE, MyConversationActivity.class);
步骤 5:实现跳转
使用 IM UIKit 提供的路由器 XKitRouter
进行跳转。
示例代码如下:
JavaXKitRouter.withKey(RouterConstant.PATH_CONVERSATION_PAGE).withContext(context).navigate();
路由器 XKitRouter
的具体使用说明,请参考 界面跳转。
相关参考
如需自定义会话列表界面的展示样式,请参考 自定义会话列表界面 UI。