浏览代码

1.优化测评模块代码

王鹏鹏 2 年之前
父节点
当前提交
b5cdd27d71

+ 2 - 0
.idea/misc.xml

@@ -535,6 +535,8 @@
         <entry key="..\:/workspace/hcp-pads/home/src/main/res/layout/item_evaluation_history.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/home/src/main/res/layout/item_evaluation_result.xml" value="0.536" />
         <entry key="..\:/workspace/hcp-pads/home/src/main/res/layout/item_game.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pads/home/src/main/res/layout/item_review_result_detail.xml" value="0.22239583333333332" />
+        <entry key="..\:/workspace/hcp-pads/home/src/main/res/layout/item_subdimensional_detail.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/home/src/main/res/layout/layout_fun_time.xml" value="0.1" />
         <entry key="..\:/workspace/hcp-pads/home/src/main/res/layout/layout_health_counseling.xml" value="0.1" />
         <entry key="..\:/workspace/hcp-pads/home/src/main/res/layout/layout_play_with_blue_porpoise.xml" value="0.1" />

+ 32 - 0
home/src/main/java/com/yingyangfly/home/adapter/ReviewResultDetailAdapter.kt

@@ -0,0 +1,32 @@
+package com.yingyangfly.home.adapter
+
+import com.yingyang.home.R
+import com.yingyang.home.databinding.ItemReviewResultDetailBinding
+import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
+import com.yingyangfly.home.entity.ReviewResultDetailBean
+
+/**
+ * 测评报告adapter
+ */
+class ReviewResultDetailAdapter(override val layoutId: Int = R.layout.item_review_result_detail) :
+    BaseDataBindingAdapter<ReviewResultDetailBean, ItemReviewResultDetailBinding>() {
+
+    private val subdimensionalDetailAdapter by lazy { SubdimensionalDetailAdapter() }
+
+    override fun onBindViewHolder(
+        binding: ItemReviewResultDetailBinding,
+        item: ReviewResultDetailBean,
+        position: Int
+    ) {
+        binding.data = item
+        binding.rvReport.adapter = subdimensionalDetailAdapter
+        if (item.list.isNullOrEmpty().not()) {
+            subdimensionalDetailAdapter.setData(item.list)
+        }
+        if (position % 2 == 0) {
+            binding.detailLayout.setBackgroundResource(R.drawable.bg_evaluation_result)
+        } else {
+            binding.detailLayout.setBackgroundResource(R.color.transparent)
+        }
+    }
+}

+ 20 - 0
home/src/main/java/com/yingyangfly/home/adapter/SubdimensionalDetailAdapter.kt

@@ -0,0 +1,20 @@
+package com.yingyangfly.home.adapter
+
+import com.yingyang.home.R
+import com.yingyang.home.databinding.ItemSubdimensionalDetailBinding
+import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
+import com.yingyangfly.home.entity.ResultDetailBean
+
+/**
+ * 测评报告子维度adapter
+ */
+class SubdimensionalDetailAdapter(override val layoutId: Int = R.layout.item_subdimensional_detail) :
+    BaseDataBindingAdapter<ResultDetailBean, ItemSubdimensionalDetailBinding>() {
+    override fun onBindViewHolder(
+        binding: ItemSubdimensionalDetailBinding,
+        item: ResultDetailBean,
+        position: Int
+    ) {
+        binding.data = item
+    }
+}

+ 20 - 1
home/src/main/java/com/yingyangfly/home/entity/ReviewResultDetailBean.kt

@@ -1,6 +1,25 @@
 package com.yingyangfly.home.entity
 
-class ReviewResultDetailBean {
+import android.text.TextUtils
 
+/**
+ * 测评报告bean
+ */
+data class ReviewResultDetailBean(
+    val list: List<ResultDetailBean>,
+    val type: String
+)
 
+class ResultDetailBean(
+    val reviewType: String,
+    val score: String,
+    val scoreRange: String
+) {
+    fun getScoreRangeInfo(): String {
+        return if (TextUtils.isEmpty(scoreRange)) {
+            ""
+        } else {
+            "0-$scoreRange"
+        }
+    }
 }

+ 19 - 2
home/src/main/java/com/yingyangfly/home/evaluation/ReviewResultDetailActivity.kt

@@ -9,8 +9,11 @@ import com.yingyang.home.R
 import com.yingyang.home.databinding.ActivityReviewResultDetailBinding
 import com.yingyangfly.baselib.ext.getEndAnimation
 import com.yingyangfly.baselib.ext.getScaleAnimation
+import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.home.adapter.ReviewResultDetailAdapter
+import com.yingyangfly.home.entity.ReviewResultDetailBean
 
 /**
  * 测评报告
@@ -21,6 +24,8 @@ class ReviewResultDetailActivity :
     View.OnTouchListener {
 
     private var reviewTaskId = ""
+    private val adapter by lazy { ReviewResultDetailAdapter() }
+    private var reviewResultDetailBeans = mutableListOf<ReviewResultDetailBean>()
 
     override fun onCreate(savedInstanceState: Bundle?) {
         reviewTaskId = intent.getStringExtra("url") ?: ""
@@ -28,7 +33,10 @@ class ReviewResultDetailActivity :
     }
 
     override fun initViews() {
-
+        binding {
+            rvResult.adapter = adapter
+            adapter.setData(reviewResultDetailBeans)
+        }
     }
 
     @SuppressLint("ClickableViewAccessibility")
@@ -51,7 +59,16 @@ class ReviewResultDetailActivity :
      * 获取测评报告详情
      */
     private fun loadData() {
-
+        viewModel.findReviewResultDetail(reviewTaskId, fail = {
+            it.toast()
+        }, success = {
+            reviewResultDetailBeans.clear()
+            if (it.isNullOrEmpty().not()) {
+                reviewResultDetailBeans.addAll(it!!)
+            }
+            adapter.showEmptyView = reviewResultDetailBeans.isEmpty()
+            adapter.setData(reviewResultDetailBeans)
+        })
     }
 
     @SuppressLint("ClickableViewAccessibility")

+ 22 - 1
home/src/main/java/com/yingyangfly/home/evaluation/ReviewResultDetailViewModel.kt

@@ -1,8 +1,29 @@
 package com.yingyangfly.home.evaluation
 
 import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.baselib.net.XUtils
+import com.yingyangfly.baselib.utils.GsonUtil
+import com.yingyangfly.home.entity.FindReviewResultBean
+import com.yingyangfly.home.entity.ReviewResultDetailBean
+import com.yingyangfly.home.net.HOME_API
 
 class ReviewResultDetailViewModel : BaseViewModel() {
 
-
+    /**
+     * 获取报告
+     */
+    fun findReviewResultDetail(
+        id: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: List<ReviewResultDetailBean>?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        val requestBean = FindReviewResultBean().apply {
+            reviewTaskId = id
+        }
+        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        HOME_API.findReviewResultDetail(body)
+    }.runUI(
+        success,
+        fail
+    )
 }

+ 6 - 0
home/src/main/java/com/yingyangfly/home/net/HomeApiService.kt

@@ -91,4 +91,10 @@ interface HomeApiService {
     @POST("game/play/record/save")
     suspend fun saveGameRecord(@Body requestBody: RequestBody): BaseResp<GameBean>
 
+    /**
+     * 测评报告详情
+     */
+    @POST("app/review/findReviewResultDetail")
+    suspend fun findReviewResultDetail(@Body requestBody: RequestBody): BaseResp<List<ReviewResultDetailBean>>
+
 }

+ 1 - 2
home/src/main/res/layout/activity_review_result_detail.xml

@@ -131,9 +131,8 @@
                     app:layout_constraintTop_toBottomOf="@+id/tvNumber">
 
                     <androidx.appcompat.widget.AppCompatTextView
-                        android:layout_width="0dp"
+                        android:layout_width="@dimen/divider_160px"
                         android:layout_height="match_parent"
-                        android:layout_weight="1"
                         android:gravity="center"
                         android:text="@string/dimension"
                         android:textColor="@android:color/white"

+ 43 - 0
home/src/main/res/layout/item_review_result_detail.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+
+    <data>
+
+        <variable
+            name="data"
+            type="com.yingyangfly.home.entity.ReviewResultDetailBean" />
+
+    </data>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/detailLayout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvType"
+            android:layout_width="@dimen/divider_160px"
+            android:layout_height="@dimen/divider_98px"
+            android:gravity="center"
+            android:text="@{data.type}"
+            android:textColor="@color/color_FF4A76FF"
+            android:textSize="@dimen/divider_24px"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/rvReport"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toEndOf="@+id/tvType"
+            app:layout_constraintTop_toTopOf="parent" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>

+ 50 - 0
home/src/main/res/layout/item_subdimensional_detail.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+
+    <data>
+
+        <variable
+            name="data"
+            type="com.yingyangfly.home.entity.ResultDetailBean" />
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/divider_98px"
+        android:orientation="horizontal">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="@{data.reviewType}"
+            android:textColor="@android:color/white"
+            android:textSize="@dimen/divider_24px"
+            android:textStyle="bold" />
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="@{data.score}"
+            android:textColor="@android:color/white"
+            android:textSize="@dimen/divider_24px"
+            android:textStyle="bold" />
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="@{data.getScoreRangeInfo()}"
+            android:textColor="@android:color/white"
+            android:textSize="@dimen/divider_24px"
+            android:textStyle="bold" />
+
+    </LinearLayout>
+
+</layout>

+ 1 - 0
home/src/main/res/values/colors.xml

@@ -69,4 +69,5 @@
     <color name="color_FF6D9AFF" tools:ignore="ResourceName">#FF6D9AFF</color>
     <color name="color_FF2826B5" tools:ignore="ResourceName">#FF2826B5</color>
     <color name="color_FF2F55FB" tools:ignore="ResourceName">#FF2F55FB</color>
+    <color name="color_FFF0F0F0" tools:ignore="ResourceName">#FFF0F0F0</color>
 </resources>