Pārlūkot izejas kodu

1.修改数据监控页面UI

王鹏鹏 2 gadi atpakaļ
vecāks
revīzija
0ed188eff2

+ 5 - 0
personalcenter/src/main/res/values/themes.xml

@@ -1,5 +1,10 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
 
+    <style name="layout_properties" tools:ignore="ResourceName">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
+
     <style name="text_personal_center" tools:ignore="ResourceName">
         <item name="android:layout_width">0dp</item>
         <item name="android:layout_height">wrap_content</item>

+ 51 - 9
workbenches/src/main/java/com/yingyang/workbenches/datamonitor/DataMonitorFragment.kt

@@ -32,18 +32,23 @@ class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMon
     /**
      * 数据监控adapter
      */
+    private var pageIndex = 1
+    private var selectedTime = ""
     private var dataMonitorList = mutableListOf<Record>()
     private val dataMonitorAdapter by lazy { DataMonitorAdapter() }
 
     override fun initViews() {
         binding {
+            swipeWeek.setEnableLoadMore(true)
+            swipeWeek.setEnableRefresh(true)
             rvDate.layoutManager = GridLayoutManager(mContext, 7)
             rvDate.adapter = dateAdapter
             dateAdapter.currentDate = User.getNowDay()
             dateAdapter.setData(dataList)
             dateAdapter.onDateClickListener = { bean ->
                 dataMonitorAdapter.clearData()
-                getDayRecordDetail(bean)
+                selectedTime = bean
+                getDayRecordDetail(true, true)
             }
             rvWeek.adapter = dataMonitorAdapter
         }
@@ -51,24 +56,38 @@ class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMon
 
     override fun initListener() {
         binding {
+            //减小月份
             leftImage.setOnSingleClickListener {
                 calendar[Calendar.MONTH] = calendar[Calendar.MONTH] - 1
                 loadData()
             }
-
+            //增大月份
             rightImage.setOnSingleClickListener {
                 calendar[Calendar.MONTH] = calendar[Calendar.MONTH] + 1
                 loadData()
             }
+
+            swipeWeek.setOnLoadMoreListener {
+                getDayRecordDetail(false, false)
+
+            }
+
+            swipeWeek.setOnRefreshListener {
+                getDayRecordDetail(true, false)
+            }
         }
     }
 
     override fun initData() {
         loadData()
         getStatisticRecord()
-        getDayRecordDetail(User.getNowDay())
+        selectedTime = User.getNowDay()
+        getDayRecordDetail(true, true)
     }
 
+    /**
+     * 统计训练天数、时长
+     */
     private fun getStatisticRecord() {
         viewModel.getStatisticRecord(fail = {
             it.toast()
@@ -78,18 +97,29 @@ class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMon
                     "您已开通专属训练<font color='#FF0000'>" + it.taskCount + "</font>天,共累计完成了专属训练<font color='#FF0000'>" + it.successCount + "</font>次"
                 binding.tvSummarize.setText(Html.fromHtml(summarize))
                 val trainingTime =
-                    "累计训练时长(含自由训练)<font color='#FF0000'>" + it.trainTime + "</font>"
+                    "累计训练时长<font color='#FF0000'>" + it.trainTime + "</font>"
                 binding.tvTrainingTime.setText(Html.fromHtml(trainingTime))
             }
         })
     }
 
-    private fun getDayRecordDetail(time: String) {
-        dataMonitorList.clear()
-        viewModel.getDayRecordDetail(time, fail = {
+    /**
+     * 查询指定日期游戏记录
+     */
+    private fun getDayRecordDetail(isRefresh: Boolean, showLoading: Boolean) {
+        if (isRefresh) {
+            dataMonitorAdapter.clearData()
+            dataMonitorList.clear()
+            pageIndex = 1
+            binding.swipeWeek.resetNoMoreData()
+        } else {
+            pageIndex++
+        }
+        viewModel.getDayRecordDetail(pageIndex, selectedTime, showLoading, fail = {
+            endRefresh()
             it.toast()
         }, success = {
-            dataMonitorList.clear()
+            endRefresh()
             if (it != null) {
                 binding.tvTrainingTimeToday.text = if (TextUtils.equals("0", it.time)) {
                     "0分钟"
@@ -98,9 +128,11 @@ class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMon
                 }
                 if (it.record.isNullOrEmpty().not()) {
                     dataMonitorList.addAll(it.record)
+                } else {
+                    binding.swipeWeek.finishLoadMoreWithNoMoreData()
                 }
-                dataMonitorAdapter.setData(dataMonitorList)
             }
+            dataMonitorAdapter.setData(dataMonitorList)
         })
     }
 
@@ -233,4 +265,14 @@ class DataMonitorFragment : BaseMVVMFragment<FragmentDataMonitorBinding, DataMon
         calendar[Calendar.MONTH] = calendar[Calendar.MONTH] - 1
     }
 
+    /**
+     * 结束刷新
+     */
+    private fun endRefresh() {
+        binding {
+            swipeWeek.finishRefresh()
+            swipeWeek.finishLoadMore()
+        }
+    }
+
 }

+ 6 - 6
workbenches/src/main/java/com/yingyang/workbenches/datamonitor/DataMonitorViewModel.kt

@@ -1,9 +1,6 @@
 package com.yingyang.workbenches.datamonitor
 
-import com.yingyang.workbenches.entity.DayRecordDetailBean
-import com.yingyang.workbenches.entity.GetMonthRecordBean
-import com.yingyang.workbenches.entity.MonthRecordBean
-import com.yingyang.workbenches.entity.StatisticRecordBean
+import com.yingyang.workbenches.entity.*
 import com.yingyang.workbenches.net.WORKBENCHES_API
 import com.yingyangfly.baselib.mvvm.BaseViewModel
 import com.yingyangfly.baselib.net.XUtils
@@ -50,12 +47,15 @@ class DataMonitorViewModel : BaseViewModel() {
      * 查询指定日期游戏记录
      */
     fun getDayRecordDetail(
+        pageIndex: Int,
         date: String,
+        showLoading: Boolean,
         fail: ((msg: String) -> Unit)? = null,
         success: ((success: DayRecordDetailBean?) -> Unit)? = null,
-    ) = launchFlow(true) {
-        val requestBean = GetMonthRecordBean().apply {
+    ) = launchFlow(showLoading) {
+        val requestBean = GetDayRecordDetailBean().apply {
             time = date
+            pageNum = pageIndex.toString()
         }
         val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
         WORKBENCHES_API.getDayRecordDetail(body)

+ 9 - 0
workbenches/src/main/java/com/yingyang/workbenches/entity/GetDayRecordDetailBean.kt

@@ -0,0 +1,9 @@
+package com.yingyang.workbenches.entity
+
+/**
+ * 查询指定日期游戏记录bean
+ */
+class GetDayRecordDetailBean {
+    var time: String? = null
+    var pageNum: String? = null
+}

+ 13 - 6
workbenches/src/main/res/layout/fragment_data_monitor.xml

@@ -136,14 +136,21 @@
             app:layout_constraintStart_toEndOf="@id/calendarLayout"
             app:layout_constraintTop_toBottomOf="@+id/tvTitle">
 
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/rvWeek"
+            <com.scwang.smartrefresh.layout.SmartRefreshLayout
+                android:id="@+id/swipeWeek"
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
-                android:layout_weight="1"
-                android:scrollbarStyle="insideOverlay"
-                android:scrollbars="vertical"
-                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
+                android:layout_weight="1">
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/rvWeek"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:scrollbarStyle="insideOverlay"
+                    android:scrollbars="vertical"
+                    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
+
+            </com.scwang.smartrefresh.layout.SmartRefreshLayout>
 
             <TextView
                 android:layout_width="match_parent"

+ 10 - 10
workbenches/src/main/res/layout/fragment_train_content.xml

@@ -19,8 +19,8 @@
             android:layout_marginTop="@dimen/divider_60px"
             android:background="@drawable/bg_training_content"
             android:gravity="center"
-            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent">
 
             <com.yingyang.workbenches.widget.NiceSpinner
@@ -33,8 +33,8 @@
                 android:textSize="@dimen/divider_28px"
                 app:hideArrow="true"
                 app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
                 tools:ignore="RtlSymmetry" />
 
@@ -57,52 +57,52 @@
             android:layout_marginTop="@dimen/divider_26px"
             android:layout_marginEnd="@dimen/divider_32px"
             android:background="@drawable/bg_training_content_title"
-            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/treatmentLayout">
 
             <androidx.appcompat.widget.AppCompatTextView
                 android:id="@+id/tvDate"
                 style="@style/training_content_title_appcompattextview"
                 android:text="@string/date"
+                app:layout_constraintEnd_toStartOf="@id/tvExerciseTherapy"
                 app:layout_constraintHorizontal_weight="1"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toStartOf="@id/tvExerciseTherapy"
                 tools:ignore="MissingConstraints" />
 
             <androidx.appcompat.widget.AppCompatTextView
                 android:id="@+id/tvExerciseTherapy"
                 style="@style/training_content_title_appcompattextview"
-                android:text="@string/exercise_therapy"
+                android:text="@string/tab3"
+                app:layout_constraintEnd_toStartOf="@id/tvTrainingProgress"
                 app:layout_constraintHorizontal_weight="1"
                 app:layout_constraintStart_toEndOf="@id/tvDate"
-                app:layout_constraintEnd_toStartOf="@id/tvTrainingProgress"
                 tools:ignore="MissingConstraints" />
 
             <androidx.appcompat.widget.AppCompatTextView
                 android:id="@+id/tvTrainingProgress"
                 style="@style/training_content_title_appcompattextview"
                 android:text="@string/training_progress"
+                app:layout_constraintEnd_toStartOf="@id/tvCognitiveTraining"
                 app:layout_constraintHorizontal_weight="1"
                 app:layout_constraintStart_toEndOf="@id/tvExerciseTherapy"
-                app:layout_constraintEnd_toStartOf="@id/tvCognitiveTraining"
                 tools:ignore="MissingConstraints" />
 
             <androidx.appcompat.widget.AppCompatTextView
                 android:id="@+id/tvCognitiveTraining"
                 style="@style/training_content_title_appcompattextview"
                 android:text="@string/cognitive_training"
+                app:layout_constraintEnd_toStartOf="@id/tvDetail"
                 app:layout_constraintHorizontal_weight="2"
                 app:layout_constraintStart_toEndOf="@id/tvTrainingProgress"
-                app:layout_constraintEnd_toStartOf="@id/tvDetail"
                 tools:ignore="MissingConstraints" />
 
             <androidx.appcompat.widget.AppCompatTextView
                 android:id="@+id/tvDetail"
                 style="@style/training_content_title_appcompattextview"
+                app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintHorizontal_weight="1"
                 app:layout_constraintStart_toEndOf="@id/tvCognitiveTraining"
-                app:layout_constraintEnd_toEndOf="parent"
                 tools:ignore="MissingConstraints" />
 
         </androidx.constraintlayout.widget.ConstraintLayout>
@@ -117,8 +117,8 @@
             android:background="@drawable/bg_training_content_list"
             app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
             app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/contentTitleLayout" />
     </androidx.constraintlayout.widget.ConstraintLayout>