文档中心>直播 SDK>语聊房>直播列表>直播列表(Android)

直播列表(Android)

最近更新时间:2025-11-21 14:15:33

我的收藏

功能预览

本文对 TUILiveKit 中的语聊房直播列表页面进行了详细的介绍。您可以在已有项目中直接参考本文档集成我们开发好的直播列表页面,也可以根据您的需求按照文档中的内容对页面的样式,布局以及功能项进行深度的定制。
双列瀑布流:默认以双列卡片形式展示语聊房列表。


快速接入

步骤 1: 开通服务

参考 开通服务 文档开通「体验版」或「大规模直播版」套餐。

步骤 2: 代码集成

参考 准备工作 接入 TUILiveKit

步骤 3: 添加直播列表瀑布流视图

语聊房场景目前仅支持双列瀑布流样式。
import android.content.Context
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.trtc.uikit.livekit.features.livelist.LiveListView
import com.trtc.uikit.livekit.features.livelist.Style

class YourActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 1.创建并初始化瀑布流视图
val view = createLiveListView(this)
// 2.将创建的 LiveListView 添加到您的 Activity 或 Fragment 中
setContentView(view)
}

fun createLiveListView(context: Context): LiveListView {
val liveListView = LiveListView(context)
// 初始化为双列瀑布流
liveListView.init(this, Style.DOUBLE_COLUMN)
return liveListView
}
}

步骤 4: 实现直播列表页到观众观看页的跳转

直播列表会通过 OnItemClickListener 回调处理点击事件,您只需在直播列表瀑布流视图中实现 OnItemClickListener 来响应用户的点击事件,并在 onItemClick 中实现跳转进入观众观看页的功能,观众观看页实现可参考 观众观看
交互示例:

代码示例
fun createLiveListView(context: Context): LiveListView {
val liveListView = LiveListView(context)
// 初始化为双列瀑布流
liveListView.init(this, Style.DOUBLE_COLUMN)

liveListView.setOnItemClickListener { view, liveInfo ->
// 点击直播列表项时,跳转进入到观众观看页面
val intent = Intent(context, YourAudienceActivity::class.java)
intent.putExtra("liveId", liveInfo.roomId)
context.startActivity(intent)
}
return liveListView
}

自定义您的界面布局

TUILiveKit 提供了灵活的接口定制直播列表瀑布流组件,您可以根据业务需求自定义数据源和列表项样式。

自定义数据源

如果您的后台有单独的直播列表数据,可以通过实现 LiveListDataSource 接口来自定义数据源,而不使用组件默认的列表数据。
// 1.导入依赖
import com.trtc.uikit.livekit.features.livelist.LiveListDataSource;

// 2.通过实现 LiveListDataSource 自定义数据源
val dataSource = object : LiveListDataSource {
override fun fetchLiveList(param: FetchLiveListParam,callback: LiveListCallback) {
// 对接自己的业务后台,按照下面的格式返回数据给UI组件
val liveInfoList = mutableListOf<TUILiveListManager.LiveInfo>()
val liveInfo = TUILiveListManager.LiveInfo().apply {
roomInfo = TUIRoomDefine.RoomInfo().apply {
roomId = "live_123456"
name = "live_123456"
}
}
liveInfoList.add(liveInfo)
val cursor = "aabbccdd"
callback.onSuccess(cursor, liveInfoList)
}
}

// 3.初始化时传入自定义的 dataSource
liveListView.init(this, Style.DOUBLE_COLUMN, dataSource = dataSource)

自定义挂件

瀑布流列表项默认显示房间封面。如果您需要自定义列表项顶部的 UI 元素(例如主播头像、直播标题等),可以通过实现 LiveListViewAdapter 接口来完成。
// 1.导入依赖
import com.trtc.uikit.livekit.features.livelist.LiveListViewAdapter;

// 2.通过实现 LiveListViewAdapter 自定义挂件
val liveListViewAdapter = object : LiveListViewAdapter {
override fun createLiveInfoView(liveInfo: TUILiveListManager.LiveInfo): View {
// 自定义挂件 view
val widgetView = YourView(context)
widgetView.init(liveInfo)
return widgetView
}

override fun updateLiveInfoView(view: View, liveInfo: TUILiveListManager.LiveInfo) {
// 更新挂件 view 中绑定的数据
val widgetView = view as YourView
widgetView.updateLiveInfoView(liveInfo)
}
}

// 3.初始化时传入自定义的 liveListViewAdapter
liveListView.init(this, Style.DOUBLE_COLUMN, adapter = liveListViewAdapter)

下一步

恭喜您,现在您已经成功集成了直播列表功能。接下来,您可以实现主播开播、观众观看等功能,可参考下表:
功能
描述
集成指引
主播开播
实现主播开播语聊房全流程功能,包括开播前的准备和开播后的各种互动。
观众观看
实现观众进入主播的语聊房后进行互动,如上麦、收发弹幕等功能。

常见问题

集成直播列表功能后页面没有任何直播怎么办?

如果您看到空白页面,需要检查您是否已完成 登录步骤。为了测试该功能,您可以使用两台设备:一台设备用于开播,另一台设备在直播列表页面,就能拉取到已开播的直播间。

我使用了自定义数据源 (LiveListDataSource),但列表不显示/不刷新怎么办?

请确保您正确实现了 LiveListDataSource 接口。重点检查以下几点:
1. 检查 fetchLiveList 方法是否被正确调用。
2. 确保在获取数据后(无论成功或失败)都调用了 callback.onSuccesscallback.onFailure
3. 检查您的业务后台接口是否返回了正确的数据格式。