产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
双列瀑布流 | 单列瀑布流 |
![]() |
![]() |
import android.content.Contextimport android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport com.trtc.uikit.livekit.features.livelist.LiveListViewimport com.trtc.uikit.livekit.features.livelist.Styleclass 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.SINGLE_COLUMN)liveListView.init(this, Style.DOUBLE_COLUMN)return liveListView}}
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;public class YourActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 1.创建并初始化瀑布流视图LiveListView view = createLiveListView(this);// 2.将创建的 LiveListView 添加到您的 Activity 或 Fragment 中setContentView(view);}private LiveListView createLiveListView(Context context) {LiveListView liveListView = new LiveListView(context);// 此处代码为双列瀑布流初始化示例,若您需要使用单列瀑布流,请将初始化代码改为 liveListView.init(this, Style.SINGLE_COLUMN, null, null);liveListView.init(this, Style.DOUBLE_COLUMN, null, null);return liveListView;}}
OnItemClickListener回调点击事件,您只需在直播列表瀑布流视图中实现 OnItemClickListener 来响应用户的点击事件,并在 onItemClick 中实现跳转进入观众观看页的功能,观众观看页实现可参考 观众观看 。
fun createLiveListView(context: Context): LiveListView {val liveListView = LiveListView(context)// 此处代码为双列瀑布流初始化示例,若您需要使用单列瀑布流,请将初始化代码改为 liveListView.init(this, Style.SINGLE_COLUMN)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}
private LiveListView createLiveListView(Context context) {LiveListView liveListView = new LiveListView(context);// 此处代码为双列瀑布流初始化示例,若您需要使用单列瀑布流,请将初始化代码改为 liveListView.init(this, Style.SINGLE_COLUMN, null, null);liveListView.init(this, Style.DOUBLE_COLUMN, null, null);liveListView.setOnItemClickListener((view, liveInfo) -> {// 点击直播列表项时,跳转进入到观众观看页面Intent intent = new Intent(context, YourAudienceActivity.class);intent.putExtra("liveId", liveInfo.roomId);context.startActivity(intent);});return liveListView;}
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.初始化时传入自定义的 dataSourceliveListView.init(this, Style.DOUBLE_COLUMN, dataSource = dataSource)
// 1.导入依赖import com.trtc.uikit.livekit.features.livelist.LiveListDataSource;// 2.通过实现 LiveListDataSource 自定义数据源LiveListDataSource dataSource = (param, callback) -> {//对接自己的业务后台,按照下面的格式返回数据给UI组件List<TUILiveListManager.LiveInfo> liveInfoList = new ArrayList<>();TUILiveListManager.LiveInfo liveInfo = new TUILiveListManager.LiveInfo();liveInfo.roomInfo = new TUIRoomDefine.RoomInfo();liveInfo.roomInfo.roomId = "live_123456";liveInfo.roomInfo.name = "live_123456";liveInfoList.add(liveInfo);String cursor = "aabbccdd";callback.onSuccess(cursor, liveInfoList);};// 3.初始化时传入自定义的 dataSourceliveListView.init(this, Style.DOUBLE_COLUMN, null, dataSource);
LiveListViewAdapter 接口来完成。// 1.导入依赖import com.trtc.uikit.livekit.features.livelist.LiveListViewAdapter;// 2.通过实现 LiveListViewAdapter 自定义挂件val liveListViewAdapter = object : LiveListViewAdapter {override fun createLiveInfoView(liveInfo: TUILiveListManager.LiveInfo): View {// 自定义挂件 viewval widgetView = YourView(context)widgetView.init(liveInfo)return widgetView}override fun updateLiveInfoView(view: View, liveInfo: TUILiveListManager.LiveInfo) {// 更新挂件 view 中绑定的数据val widgetView = view as YourViewwidgetView.updateLiveInfoView(liveInfo)}}// 3.初始化时传入自定义的 liveListViewAdapterliveListView.init(this, Style.DOUBLE_COLUMN, adapter = liveListViewAdapter)
// 1.导入依赖import com.trtc.uikit.livekit.features.livelist.LiveListViewAdapter;// 2.通过实现 LiveListViewAdapter 自定义挂件LiveListViewAdapter liveListViewAdapter = new LiveListViewAdapter() {@Overridepublic View createLiveInfoView(TUILiveListManager.LiveInfo liveInfo) {// 自定义挂件viewCustomView widgetView = new CustomView(context);widgetView.init(liveInfo);return widgetView;}@Overridepublic void updateLiveInfoView(View view, TUILiveListManager.LiveInfo liveInfo) {// 更新挂件view中绑定的数据CustomView widgetView = (CustomView) view;widgetView.updateLiveInfoView(liveInfo);}};// 3.初始化时传入自定义的 liveListViewAdapterliveListView.init(this, Style.DOUBLE_COLUMN, liveListViewAdapter, null);
文档反馈