Explorar el Código

1.优化预约直播接口请求

王鹏鹏 hace 2 años
padre
commit
0a309cea34

+ 24 - 21
livebroadcast/src/main/java/com/yingyang/livebroadcast/activity/list/LiveBroadcastListActivity.kt

@@ -62,27 +62,27 @@ class LiveBroadcastListActivity :
             rvLiveBroadcast.layoutManager = gridLayoutManager
             rvLiveBroadcast.adapter = liveBroadcastAdapter
             liveBroadcastAdapter.setData(liveBroadcastList)
-            liveBroadcastAdapter.onLiveBroadcastImageClickListener = { url, method, title, id ->
-                when (method) {
-                    "预约直播" -> {
-                        appointmentLive(id)
+            liveBroadcastAdapter.onLiveBroadcastImageClickListener =
+                { url, method, title, id, position ->
+                    when (method) {
+                        "预约直播" -> {
+                            appointmentLive(id, position)
+                        }
+                        "直播中" -> {
+                            initPermission(url)
+                        }
+                        "直播回放" -> {
+                            ARouter.getInstance().build(RouterUrlCommon.videoPlayer)
+                                .withString("url", url)
+                                .withString("title", title)
+                                .withTransition(
+                                    R.anim.leftin,
+                                    R.anim.leftout
+                                ).navigation(mContext)
+                        }
                     }
-                    "直播中" -> {
-                        initPermission(url)
-                    }
-                    "直播回放" -> {
-                        ARouter.getInstance().build(RouterUrlCommon.videoPlayer)
-                            .withString("url", url)
-                            .withString("title", title)
-                            .withTransition(
-                                com.yingyangfly.baselib.R.anim.leftin,
-                                com.yingyangfly.baselib.R.anim.leftout
-                            )
-                            .navigation(mContext)
-                    }
-                }
 
-            }
+                }
             radioLive.setOnCheckedChangeListener { group, checkedId ->
                 liveBroadcastAdapter.clearData()
                 liveBroadcastAdapter.showEmptyView = false
@@ -110,11 +110,14 @@ class LiveBroadcastListActivity :
     /**
      * 预约直播
      */
-    private fun appointmentLive(method: String) {
+    private fun appointmentLive(method: String, position: Int) {
         viewModel.reservationLive(method, fail = {
             it.show()
         }, success = {
-            loadData(true, true)
+            if (liveBroadcastAdapter.data.isNullOrEmpty().not()) {
+                liveBroadcastAdapter.data[position].isReservation = "1"
+                liveBroadcastAdapter.notifyItemChanged(position)
+            }
         })
     }
 

+ 20 - 9
livebroadcast/src/main/java/com/yingyang/livebroadcast/adapter/LiveBroadcastAdapter.kt

@@ -7,6 +7,7 @@ import com.yingyang.livebroadcast.databinding.ItemLiveBroadcastBinding
 import com.yingyang.livebroadcast.entity.Record
 import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.toast
 
 /**
  * 直播列表adapter
@@ -22,7 +23,10 @@ class LiveBroadcastAdapter(override val layoutId: Int = R.layout.item_live_broad
         notifyDataSetChanged()
     }
 
-    var onLiveBroadcastImageClickListener: ((url: String, method: String, title: String, id: String) -> Unit)? =
+    var onLiveBroadcastImageClickListener: ((
+        url: String, method: String, title: String, id: String,
+        position: Int
+    ) -> Unit)? =
         null
 
     override fun onBindViewHolder(binding: ItemLiveBroadcastBinding, item: Record, position: Int) {
@@ -39,19 +43,25 @@ class LiveBroadcastAdapter(override val layoutId: Int = R.layout.item_live_broad
         binding.layoutLiveBroadcast.setOnSingleClickListener {
             when (method) {
                 "预约直播" -> {
-                    onLiveBroadcastImageClickListener?.invoke(
-                        "",
-                        method,
-                        item.liveName,
-                        item.id
-                    )
+                    if (TextUtils.equals("1", item.isReservation)) {
+                        "您已预约该直播".toast()
+                    } else {
+                        onLiveBroadcastImageClickListener?.invoke(
+                            "",
+                            method,
+                            item.liveName,
+                            item.id,
+                            position
+                        )
+                    }
                 }
                 "直播中" -> {
                     onLiveBroadcastImageClickListener?.invoke(
                         item.streamInfo.webrtcPull,
                         method,
                         item.liveName,
-                        ""
+                        "",
+                        position
                     )
                 }
                 "直播回放" -> {
@@ -59,7 +69,8 @@ class LiveBroadcastAdapter(override val layoutId: Int = R.layout.item_live_broad
                         item.liveVideo,
                         method,
                         item.liveName,
-                        ""
+                        "",
+                        position
                     )
                 }
 

+ 1 - 1
livebroadcast/src/main/java/com/yingyang/livebroadcast/entity/LiveBroadcastListBean.kt

@@ -27,7 +27,7 @@ data class Record(
     val liveStatus: String,//直播状态 1未开始 2直播中 3已结束 4已取消
     val liveTags: String,//设置标签
     val liveVideo: String,//录播地址
-    val isReservation: String,//是否预定 1是 2否
+    var isReservation: String,//是否预定 1是 2否
     val streamInfo: StreamInfo//流信息
 )
 

+ 8 - 0
livebroadcast/src/main/res/anim/leftin.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="500"
+        android:fromXDelta="100%p"
+        android:toXDelta="0" />
+</set> 
+

+ 8 - 0
livebroadcast/src/main/res/anim/leftout.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="500"
+        android:fromXDelta="0"
+        android:toXDelta="-100%p" />
+</set> 
+