Android

集成会话列表界面

更新时间: 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中实现)

      Javapublic 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 的路由 XKitRouter 中,从而将默认的会话列表 Activity 替换为自定义会话列表 Activity。

方式一:基于 Activity

本地会话

IM UIKit 提供默认会话列表 Activity 的类名为 LocalConversationActivity

您可以使用 IM UIKit 提供的路由 XKitRouter 跳转到默认会话列表界面 LocalConversationActivity

  • XKitRouter 原型

    JavaXKitRouter.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 原型

    JavaXKitRouter.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 界面。

  • 方法原型

    JavaXKitRouter.registerRouter(path,activity);
    
  • 参数说明

    参数 类型 说明
    path String Activity 的跳转地址
    activity Class 跳转的目标 Activity
  • 示例代码

    JavaXKitRouter.registerRouter(RouterConstant.PATH_CONVERSATION_PAGE, MyConversationActivity.class);
    

步骤 5:实现跳转

使用 IM UIKit 提供的路由器 XKitRouter 进行跳转。

示例代码如下:

JavaXKitRouter.withKey(RouterConstant.PATH_CONVERSATION_PAGE).withContext(context).navigate();

路由器 XKitRouter 的具体使用说明,请参考 界面跳转

相关参考

如需自定义会话列表界面的展示样式,请参考 自定义会话列表界面 UI

此文档是否对你有帮助?
有帮助
去反馈
  • 效果展示
  • 前提条件
  • 实现方法
  • 方式一:基于 Activity
  • 方式二:基于 Fragment
  • 步骤 1:创建 Activity 的布局文件
  • 步骤 2:创建 Activity
  • 步骤 3:声明 Activity
  • 步骤 4:注册会话列表界面
  • 步骤 5:实现跳转
  • 相关参考