Parcourir la source

1.优化首页UI

王鹏鹏 il y a 2 ans
Parent
commit
97f2953e11

+ 1 - 1
baselib/src/main/java/com/yingyangfly/baselib/net/BaseNetWork.kt

@@ -54,7 +54,7 @@ object BaseNetWork {
                 response
             }
         builder.addInterceptor(OkHttpProfilerInterceptor())
-        builder.addInterceptor(LoggingInterceptor())
+//        builder.addInterceptor(LoggingInterceptor())
         return builder.build()
     }
 

+ 1 - 1
baselib/src/main/java/com/yingyangfly/baselib/net/OkHttpHelper.kt

@@ -45,7 +45,7 @@ class OkHttpHelper private constructor() {
                     .build()
                 chain.proceed(request)
             }
-        builder.addInterceptor(LoggingInterceptor())
+//        builder.addInterceptor(LoggingInterceptor())
         builder.addInterceptor(OkHttpProfilerInterceptor())
         okHttpClient = builder.build()
         return okHttpClient

+ 17 - 0
workbenches/src/main/java/com/yingyang/workbenches/entity/FreeTrainBean.kt

@@ -0,0 +1,17 @@
+package com.yingyang.workbenches.entity
+
+/**
+ * 畅游蓝豚bean
+ */
+data class FreeTrainBean(
+    val countId: Any,
+    val current: Int,
+    val maxLimit: Int,
+    val optimizeCountSql: Boolean,
+    val orders: List<Any>,
+    val pages: Int,
+    val records: List<Record>,
+    val searchCount: Boolean,
+    val size: Int,
+    val total: Int
+)

+ 47 - 12
workbenches/src/main/java/com/yingyang/workbenches/freetraining/FreeTrainActivity.kt

@@ -3,6 +3,7 @@ package com.yingyang.workbenches.freetraining
 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
@@ -35,10 +36,14 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
     private var freeTrainList = mutableListOf<Record>()
     private val freeTrainListAdapter by lazy { FreeTrainAdapter() }
 
+    private var page = 1
+
     override fun initViews() {
         freeTypeList.clear()
         freeTypeList.add(TrainTypeBean(dictLabel = "全部训练", dictValue = "", dictType = "game_type"))
         binding {
+            freeTrainSwipe.setEnableLoadMore(true)
+            freeTrainSwipe.setEnableRefresh(true)
             //自由训练类型
             rvTrainType.layoutManager = LinearLayoutManager(this@FreeTrainActivity)
             rvTrainType.adapter = freeTrainTypeAdapter
@@ -51,7 +56,7 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
                     rvTrain.show(true)
                     emptyLayout.show(false)
                 }
-                loadData()
+                loadData(true)
             }
             //自由训练游戏列表
             rvTrain.layoutManager = GridLayoutManager(this@FreeTrainActivity, 4)
@@ -71,6 +76,14 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
             layoutHead.setOnSingleClickListener {
                 JumpUtil.jumpActivity(RouterUrlCommon.home, mContext)
             }
+
+            freeTrainSwipe.setOnRefreshListener {
+                loadData(true)
+            }
+
+            freeTrainSwipe.setOnLoadMoreListener {
+                loadData(false)
+            }
         }
     }
 
@@ -81,7 +94,7 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
     override fun onResume() {
         super.onResume()
         getSelectByDictType()
-        loadData()
+        loadData(true)
     }
 
     /**
@@ -103,20 +116,42 @@ class FreeTrainActivity : BaseMVVMActivity<ActivityFreeTrainBinding, FreeTrainVi
     /**
      * 加载列表
      */
-    private fun loadData() {
-        freeTrainList.clear()
-        freeTrainListAdapter.clearData()
-        viewModel.getFreeTrainList(type, fail = {
+    private fun loadData(isRefresh: Boolean) {
+        if (isRefresh) {
+            page = 1
+            binding.freeTrainSwipe.resetNoMoreData()
+            freeTrainList.clear()
+            freeTrainListAdapter.clearData()
+        } else {
+            page++
+        }
+        viewModel.getFreeTrainList(type, page, fail = {
+            endRefresh()
             it.toast()
         }, success = {
-            freeTrainList.clear()
-            if (it.isNullOrEmpty().not()) {
-                freeTrainList.addAll(it)
+            endRefresh()
+            if (it != null) {
+                if (it.records.isNullOrEmpty().not()) {
+                    freeTrainList.addAll(it.records)
+                }
+                if (page >= it.pages) {
+                    binding.freeTrainSwipe.finishLoadMoreWithNoMoreData()
+                }
+                binding.rvTrain.show(freeTrainList.isNullOrEmpty().not())
+                binding.emptyLayout.show(freeTrainList.isNullOrEmpty())
+                freeTrainListAdapter.setData(freeTrainList)
             }
-            binding.rvTrain.show(freeTrainList.isNullOrEmpty().not())
-            binding.emptyLayout.show(freeTrainList.isNullOrEmpty())
-            freeTrainListAdapter.setData(freeTrainList)
         })
     }
 
+    /**
+     * 结束刷新
+     */
+    private fun endRefresh() {
+        binding {
+            freeTrainSwipe.finishLoadMore()
+            freeTrainSwipe.finishRefresh()
+        }
+    }
+
 }

+ 4 - 2
workbenches/src/main/java/com/yingyang/workbenches/freetraining/FreeTrainViewModel.kt

@@ -1,5 +1,6 @@
 package com.yingyang.workbenches.freetraining
 
+import com.yingyang.workbenches.entity.FreeTrainBean
 import com.yingyang.workbenches.entity.Record
 import com.yingyang.workbenches.entity.TrainTypeBean
 import com.yingyang.workbenches.net.WORKBENCHES_API
@@ -29,10 +30,11 @@ class FreeTrainViewModel : BaseViewModel() {
      */
     fun getFreeTrainList(
         type: String,
+        page: Int,
         fail: ((msg: String) -> Unit)? = null,
-        success: ((success: List<Record>) -> Unit)? = null,
+        success: ((success: FreeTrainBean) -> Unit)? = null,
     ) = launchFlow(true) {
-        WORKBENCHES_API.getTrainingList(type)
+        WORKBENCHES_API.getTrainingList(type, page, "12")
     }.runUI(
         success,
         fail

+ 1 - 1
workbenches/src/main/java/com/yingyang/workbenches/net/WorkbenchesApiService.kt

@@ -42,7 +42,7 @@ interface WorkbenchesApiService {
      * @param gameType
      */
     @POST("app/game/freePlay")
-    suspend fun getTrainingList(@Query("gameType") gameType: String): BaseResp<List<Record>>
+    suspend fun getTrainingList(@Query("gameType") gameType: String, @Query("page") page: Int, @Query("limit") limit: String): BaseResp<FreeTrainBean>
 
     /**
      * 获取自由训练类型列表

+ 22 - 15
workbenches/src/main/res/layout/activity_free_train.xml

@@ -77,31 +77,38 @@
                     app:layout_constraintRight_toRightOf="parent"
                     app:layout_constraintTop_toTopOf="parent" />
 
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/rvTrain"
+                <com.scwang.smartrefresh.layout.SmartRefreshLayout
+                    android:id="@+id/freeTrainSwipe"
                     android:layout_width="match_parent"
                     android:layout_height="0dp"
-                    android:layout_marginStart="@dimen/divider_16px"
-                    android:layout_marginTop="@dimen/divider_8px"
-                    android:layout_marginBottom="@dimen/divider_8px"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintLeft_toLeftOf="parent"
                     app:layout_constraintRight_toRightOf="parent"
-                    app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
+                    app:layout_constraintTop_toBottomOf="@+id/tvTitle">
 
-                <LinearLayout
-                    android:id="@+id/emptyLayout"
-                    style="@style/empty_linear_layout_style"
-                    android:visibility="gone"
-                    app:layout_constraintTop_toBottomOf="@+id/tvTitle"
-                    tools:ignore="MissingConstraints">
+                    <androidx.recyclerview.widget.RecyclerView
+                        android:id="@+id/rvTrain"
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:layout_marginStart="@dimen/divider_16px"
+                        android:layout_marginTop="@dimen/divider_8px"
+                        android:layout_marginBottom="@dimen/divider_8px" />
 
-                    <androidx.appcompat.widget.AppCompatImageView style="@style/empty_image_view_style" />
+                    <LinearLayout
+                        android:id="@+id/emptyLayout"
+                        style="@style/empty_linear_layout_style"
+                        android:layout_height="match_parent"
+                        android:visibility="gone"
+                        app:layout_constraintTop_toBottomOf="@+id/tvTitle"
+                        tools:ignore="MissingConstraints">
 
-                    <androidx.appcompat.widget.AppCompatTextView style="@style/empty_text_view_style" />
+                        <androidx.appcompat.widget.AppCompatImageView style="@style/empty_image_view_style" />
 
-                </LinearLayout>
+                        <androidx.appcompat.widget.AppCompatTextView style="@style/empty_text_view_style" />
 
+                    </LinearLayout>
+
+                </com.scwang.smartrefresh.layout.SmartRefreshLayout>
             </androidx.constraintlayout.widget.ConstraintLayout>
         </androidx.cardview.widget.CardView>
     </androidx.constraintlayout.widget.ConstraintLayout>