Browse Source

1.优化首页弹窗UI

王鹏鹏 2 years ago
parent
commit
6f8bdf3095

+ 2 - 2
workbenches/src/main/java/com/yingyang/workbenches/adapter/FreeTrainAdapter.kt

@@ -16,7 +16,7 @@ import com.yingyangfly.baselib.utils.img.ImgUtil
 class FreeTrainAdapter(override val layoutId: Int = R.layout.item_free_training) :
     BaseDataBindingAdapter<Record, ItemFreeTrainingBinding>() {
 
-    var onGameClickListener: ((bean: Record) -> Unit)? = null
+    var onGameClickListener: ((bean: Record, position: Int) -> Unit)? = null
 
     var method = ""
 
@@ -34,7 +34,7 @@ class FreeTrainAdapter(override val layoutId: Int = R.layout.item_free_training)
         ImgUtil.loadImg(AppUtil.getContext(), item.gameCoverImage, binding.gameImage)
         binding.tvType.show(method.isNullOrEmpty())
         binding.gameLayout.setOnSingleClickListener {
-            onGameClickListener?.invoke(item)
+            onGameClickListener?.invoke(item, position)
         }
     }
 }

+ 30 - 7
workbenches/src/main/java/com/yingyang/workbenches/freetraining/FreeTrainActivity.kt

@@ -1,16 +1,15 @@
 package com.yingyang.workbenches.freetraining
 
+import android.text.TextUtils
 import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.LinearLayoutManager
 import com.alibaba.android.arouter.facade.annotation.Route
-import com.scwang.smartrefresh.layout.api.RefreshLayout
 import com.yingyang.workbenches.adapter.FreeTrainAdapter
 import com.yingyang.workbenches.adapter.FreeTrainTypeAdapter
 import com.yingyang.workbenches.databinding.ActivityFreeTrainBinding
 import com.yingyang.workbenches.entity.Record
 import com.yingyang.workbenches.entity.TrainTypeBean
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
-import com.yingyangfly.baselib.ext.show
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
@@ -33,6 +32,8 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
     /**
      * 自由训练游戏列表
      */
+    private var gameId = ""
+    private var gameIndex = 0
     private var gridLayoutManager: GridLayoutManager? = null
     private var freeTrainList = mutableListOf<Record>()
     private val freeTrainListAdapter by lazy { FreeTrainAdapter() }
@@ -62,7 +63,9 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
             rvTrain.layoutManager = gridLayoutManager
             rvTrain.adapter = freeTrainListAdapter
             freeTrainListAdapter.setType(type)
-            freeTrainListAdapter.onGameClickListener = { bean ->
+            freeTrainListAdapter.onGameClickListener = { bean, position ->
+                gameId = bean.id
+                gameIndex = position
                 val str =
                     bean.gameUrl + "?gameCode=" + bean.gameCode + "&isFull=false&isSound=true&playClass=" + bean.playClass +
                             "&userToken=" + User.getToken()
@@ -96,9 +99,29 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
     override fun onResume() {
         super.onResume()
         getSelectByDictType()
-        freeTrainListAdapter.clearData()
-        freeTrainListAdapter.showEmptyView = false
-        loadData(true, true)
+//        if (TextUtils.isEmpty(gameId)) {
+            freeTrainListAdapter.clearData()
+            freeTrainListAdapter.showEmptyView = false
+            loadData(true, true)
+//        } else {
+//            getGameDetail()
+//        }
+    }
+
+    /**
+     * 获取游戏详情
+     */
+    private fun getGameDetail() {
+        viewModel.getGameDetail(gameId, fail = {
+            it.toast()
+        }, success = {
+            if (it != null && freeTrainListAdapter.data.isNullOrEmpty().not()) {
+                if (TextUtils.equals(freeTrainListAdapter.data[gameIndex].id, it.id)) {
+                    freeTrainListAdapter.data.set(gameIndex, it)
+                    freeTrainListAdapter.notifyItemChanged(gameIndex)
+                }
+            }
+        })
     }
 
     /**
@@ -144,7 +167,7 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
                 if (freeTrainList.isNullOrEmpty()) {
                     gridLayoutManager?.spanCount = 1
                 } else {
-                    gridLayoutManager?.spanCount = 1
+                    gridLayoutManager?.spanCount = 4
                 }
                 freeTrainListAdapter.showEmptyView = freeTrainList.isNullOrEmpty()
                 freeTrainListAdapter.setData(freeTrainList)

+ 14 - 0
workbenches/src/main/java/com/yingyang/workbenches/freetraining/FreeTrainViewModel.kt

@@ -40,4 +40,18 @@ class FreeTrainViewModel : BaseViewModel() {
         success,
         fail
     )
+
+    /**
+     * 获取游戏详情
+     */
+    fun getGameDetail(
+        id: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: Record?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        WORKBENCHES_API.getGameDetail(id)
+    }.runUI(
+        success,
+        fail
+    )
 }