Explorar o código

1.添加获取moca试题库module

王鹏鹏 %!s(int64=2) %!d(string=hai) anos
pai
achega
2ec11e6a69

+ 3 - 1
.idea/misc.xml

@@ -120,6 +120,7 @@
         <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/item_number.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/item_selected_item.xml" value="0.536" />
         <entry key="..\:/workspace/hcp-pad/mmse/src/main/res/layout/item_year.xml" value="1.0" />
+        <entry key="..\:/workspace/hcp-pad/moca/src/main/res/drawable/bg_choice_item.xml" value="0.1715" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/drawable/bg_resetting.xml" value="0.1715" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/drawable/bg_rubber.xml" value="0.1615" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/drawable/bg_start_clock.xml" value="0.1715" />
@@ -134,7 +135,7 @@
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/fragment_identify_result.xml" value="0.22239583333333332" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/fragment_listen_record.xml" value="0.6" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/fragment_listen_speak.xml" value="0.22239583333333332" />
-        <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/fragment_listen_speak_result.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/fragment_listen_speak_result.xml" value="0.8" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/fragment_memorize_numbers.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/fragment_memorize_result.xml" value="0.4421768707482993" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/fragment_multiple_choice.xml" value="0.23697916666666666" />
@@ -151,6 +152,7 @@
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/item_moca_choice.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/item_number.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/item_selected_item.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/item_speak_result.xml" value="0.8" />
         <entry key="..\:/workspace/hcp-pad/moca/src/main/res/layout/item_verify_answers.xml" value="0.8" />
         <entry key="..\:/workspace/hcp-pad/personalcenter/src/main/res/drawable/bg_center.xml" value="0.219" />
         <entry key="..\:/workspace/hcp-pad/personalcenter/src/main/res/drawable/bg_common_head_layout.xml" value="0.219" />

+ 36 - 0
moca/src/main/java/com/yingyangfly/moca/adapter/SpeakResultAdapter.kt

@@ -0,0 +1,36 @@
+package com.yingyangfly.moca.adapter
+
+import android.text.TextUtils
+import com.yingyang.moca.R
+import com.yingyang.moca.databinding.ItemSpeakResultBinding
+import com.yingyangfly.baselib.adapter.BaseDataBindingAdapter
+import com.yingyangfly.baselib.db.QuestionsBean
+
+class SpeakResultAdapter(override val layoutId: Int = R.layout.item_speak_result) :
+    BaseDataBindingAdapter<QuestionsBean, ItemSpeakResultBinding>() {
+
+    var onCheckClickListener: ((bean: QuestionsBean) -> Unit)? = null
+
+    override fun onBindViewHolder(
+        binding: ItemSpeakResultBinding,
+        item: QuestionsBean,
+        position: Int
+    ) {
+        binding.data = item
+        binding.radioCorrect.isChecked = TextUtils.equals(item.inputString, "是")
+        binding.radioDeny.isChecked = TextUtils.equals(item.inputString, "否")
+        binding.radioChoice.setOnCheckedChangeListener { group, checkedId ->
+            item.reviewId = item.id
+            item.reviewAnswer = ""
+            if (checkedId == R.id.radioCorrect) {
+                item.inputString = "是"
+                item.correct = "1"
+                onCheckClickListener?.invoke(item)
+            } else if (checkedId == R.id.radioDeny) {
+                item.inputString = "否"
+                item.correct = "0"
+                onCheckClickListener?.invoke(item)
+            }
+        }
+    }
+}

+ 1 - 3
moca/src/main/java/com/yingyangfly/moca/identify/IdentifyResultFragment.kt

@@ -52,10 +52,8 @@ class IdentifyResultFragment : BaseFragment<FragmentIdentifyResultBinding>() {
 
             btnNext.setOnSingleClickListener {
                 if (judge()) {
-
-
                     val controller = Navigation.findNavController(it)
-                    val bundle = bundleOf("questionId" to 44, "number" to 1)
+                    val bundle = bundleOf("questionId" to 44)
                     controller.navigate(
                         R.id.action_identifyResultFragment_to_listenRecordFragment,
                         bundle

+ 19 - 16
moca/src/main/java/com/yingyangfly/moca/listenspeak/ListenSpeakResultFragment.kt

@@ -10,6 +10,7 @@ import com.yingyangfly.baselib.db.QuestionsBean
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.moca.adapter.ChoiceAdapter
+import com.yingyangfly.moca.adapter.SpeakResultAdapter
 
 class ListenSpeakResultFragment : BaseFragment<FragmentListenSpeakResultBinding>() {
 
@@ -18,7 +19,7 @@ class ListenSpeakResultFragment : BaseFragment<FragmentListenSpeakResultBinding>
      */
     private var questionId = 0
     private val choiceItemList = mutableListOf<QuestionsBean>()
-    private val adapter by lazy { ChoiceAdapter() }
+    private val adapter by lazy { SpeakResultAdapter() }
 
     override fun onCreate(savedInstanceState: Bundle?) {
         questionId = arguments?.getInt("questionId") ?: 57
@@ -28,7 +29,7 @@ class ListenSpeakResultFragment : BaseFragment<FragmentListenSpeakResultBinding>
     override fun initViews() {
         binding {
             rvChoice.adapter = adapter
-            adapter.onNumClickListener = {
+            adapter.onCheckClickListener = {
                 if (dao != null) {
                     dao?.update(it)
                 }
@@ -48,20 +49,22 @@ class ListenSpeakResultFragment : BaseFragment<FragmentListenSpeakResultBinding>
             }
 
             btnNext.setOnSingleClickListener {
-                if (questionId == 57) {
-                    val controller = Navigation.findNavController(it)
-                    val bundle = bundleOf("questionId" to 58)
-                    controller.navigate(
-                        R.id.action_listenSpeakResultFragment_to_listenSpeakFragment,
-                        bundle
-                    )
-                } else {
-                    val controller = Navigation.findNavController(it)
-                    val bundle = bundleOf("questionId" to 59)
-                    controller.navigate(
-                        R.id.action_listenSpeakResultFragment_to_timepieceFragment,
-                        bundle
-                    )
+                if (judge()) {
+                    if (questionId == 57) {
+                        val controller = Navigation.findNavController(it)
+                        val bundle = bundleOf("questionId" to 58)
+                        controller.navigate(
+                            R.id.action_listenSpeakResultFragment_to_listenSpeakFragment,
+                            bundle
+                        )
+                    } else {
+                        val controller = Navigation.findNavController(it)
+                        val bundle = bundleOf("questionId" to 59)
+                        controller.navigate(
+                            R.id.action_listenSpeakResultFragment_to_timepieceFragment,
+                            bundle
+                        )
+                    }
                 }
             }
         }

+ 33 - 15
moca/src/main/java/com/yingyangfly/moca/memorizenumbers/MemorizeResultFragment.kt

@@ -8,6 +8,7 @@ import com.yingyang.moca.databinding.FragmentMemorizeResultBinding
 import com.yingyangfly.baselib.base.BaseFragment
 import com.yingyangfly.baselib.db.QuestionsBean
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.moca.adapter.ChoiceAdapter
 
 class MemorizeResultFragment : BaseFragment<FragmentMemorizeResultBinding>() {
@@ -24,7 +25,6 @@ class MemorizeResultFragment : BaseFragment<FragmentMemorizeResultBinding>() {
         super.onCreate(savedInstanceState)
     }
 
-
     override fun initViews() {
         binding {
             rvChoice.adapter = adapter
@@ -47,20 +47,22 @@ class MemorizeResultFragment : BaseFragment<FragmentMemorizeResultBinding>() {
                 )
             }
             btnNext.setOnSingleClickListener {
-                if (questionId == 49) {
-                    val controller = Navigation.findNavController(it)
-                    val bundle = bundleOf("questionId" to 50)
-                    controller.navigate(
-                        R.id.action_memorizeResultFragment_to_memorizeNumbersFragment,
-                        bundle
-                    )
-                } else {
-                    val controller = Navigation.findNavController(it)
-                    val bundle = bundleOf("questionId" to 51)
-                    controller.navigate(
-                        R.id.action_memorizeResultFragment_to_memorizeNumbersFragment,
-                        bundle
-                    )
+                if (judge()) {
+                    if (questionId == 49) {
+                        val controller = Navigation.findNavController(it)
+                        val bundle = bundleOf("questionId" to 50)
+                        controller.navigate(
+                            R.id.action_memorizeResultFragment_to_memorizeNumbersFragment,
+                            bundle
+                        )
+                    } else {
+                        val controller = Navigation.findNavController(it)
+                        val bundle = bundleOf("questionId" to 51)
+                        controller.navigate(
+                            R.id.action_memorizeResultFragment_to_memorizeNumbersFragment,
+                            bundle
+                        )
+                    }
                 }
             }
         }
@@ -93,4 +95,20 @@ class MemorizeResultFragment : BaseFragment<FragmentMemorizeResultBinding>() {
         }
         adapter.setData(choiceItemList)
     }
+
+    /**
+     * 非空判断
+     */
+    private fun judge(): Boolean {
+        if (choiceItemList.isNullOrEmpty().not()) {
+            choiceItemList.forEach {
+                if (it.inputString.isNullOrEmpty()) {
+                    "请判断答案是否正确".toast()
+                    return false
+                }
+            }
+        }
+        return true
+    }
+
 }

+ 38 - 29
moca/src/main/java/com/yingyangfly/moca/numberrecords/NumberRecordsFragment.kt

@@ -22,7 +22,7 @@ class NumberRecordsFragment : BaseFragment<FragmentNumberRecordsBinding>() {
      * 问题id
      */
     private var questionId = 0
-
+    private var toastIndo = ""
     private val numberList = mutableListOf<String>()
     private val numberAdapter by lazy { NumberAdapter() }
     private val stringBuffer = StringBuffer()
@@ -106,34 +106,38 @@ class NumberRecordsFragment : BaseFragment<FragmentNumberRecordsBinding>() {
                 }
             }
             btnNext.setOnSingleClickListener {
-                when (questionId) {
-                    72 -> {
-                        val controller = Navigation.findNavController(it)
-                        val bundle = bundleOf("questionId" to 75)
-                        controller.navigate(
-                            R.id.action_numberRecordsFragment_to_weekFragment,
-                            bundle
-                        )
-                    }
-                    73, 74 -> {
-                        questionId--
-                        loadData()
-                    }
-                    59 -> {
-                        val controller = Navigation.findNavController(it)
-                        val bundle = bundleOf("questionId" to 60)
-                        controller.navigate(
-                            R.id.action_numberRecordsFragment_to_singleChoiceFragment,
-                            bundle
-                        )
-                    }
-                    else -> {
-                        val controller = Navigation.findNavController(it)
-                        val bundle = bundleOf("questionId" to 52)
-                        controller.navigate(
-                            R.id.action_numberRecordsFragment_to_computationFragment,
-                            bundle
-                        )
+                if (binding.editTime.text.isNullOrEmpty()) {
+                    toastIndo.toast()
+                } else {
+                    when (questionId) {
+                        72 -> {
+                            val controller = Navigation.findNavController(it)
+                            val bundle = bundleOf("questionId" to 75)
+                            controller.navigate(
+                                R.id.action_numberRecordsFragment_to_weekFragment,
+                                bundle
+                            )
+                        }
+                        73, 74 -> {
+                            questionId--
+                            loadData()
+                        }
+                        59 -> {
+                            val controller = Navigation.findNavController(it)
+                            val bundle = bundleOf("questionId" to 60)
+                            controller.navigate(
+                                R.id.action_numberRecordsFragment_to_singleChoiceFragment,
+                                bundle
+                            )
+                        }
+                        else -> {
+                            val controller = Navigation.findNavController(it)
+                            val bundle = bundleOf("questionId" to 52)
+                            controller.navigate(
+                                R.id.action_numberRecordsFragment_to_computationFragment,
+                                bundle
+                            )
+                        }
                     }
                 }
             }
@@ -155,23 +159,28 @@ class NumberRecordsFragment : BaseFragment<FragmentNumberRecordsBinding>() {
     private fun loadData() {
         when (questionId) {
             72 -> {
+                toastIndo = "请问今年是哪一年"
                 binding.tvTitle.text = "今年是哪一年"
                 binding.tvTimes.show(false)
             }
             73 -> {
+                toastIndo = "请问现在是几月"
                 binding.tvTitle.text = "现在是几月"
                 binding.tvTimes.show(false)
             }
             74 -> {
+                toastIndo = "请问今天是几号"
                 binding.tvTitle.text = "今天是几号"
                 binding.tvTimes.show(false)
             }
             59 -> {
+                toastIndo = "请问请问受试者说了几个"
                 binding.tvTitle.text = "请问受试者说了"
                 binding.tvTimes.text = "个"
                 binding.tvTimes.show(true)
             }
             else -> {
+                toastIndo = "请问受试者错了几次"
                 binding.tvTitle.text = "请问受试者错了"
                 binding.tvTimes.text = "次"
                 binding.tvTimes.show(true)

+ 8 - 6
moca/src/main/java/com/yingyangfly/moca/omputation/ComputationFragment.kt

@@ -90,12 +90,14 @@ class ComputationFragment : BaseFragment<FragmentComputationBinding>() {
             }
 
             btnNext.setOnSingleClickListener {
-                val controller = Navigation.findNavController(it)
-                val bundle = bundleOf("questionId" to 57)
-                controller.navigate(
-                    R.id.action_computationFragment_to_listenSpeakFragment,
-                    bundle
-                )
+                if (judge()) {
+                    val controller = Navigation.findNavController(it)
+                    val bundle = bundleOf("questionId" to 57)
+                    controller.navigate(
+                        R.id.action_computationFragment_to_listenSpeakFragment,
+                        bundle
+                    )
+                }
             }
 
             editResultOne.setOnFocusChangeListener { v, hasFocus ->

+ 8 - 8
moca/src/main/java/com/yingyangfly/moca/record/RecordResultFragment.kt

@@ -145,14 +145,14 @@ class RecordResultFragment : BaseFragment<FragmentRecordResultBinding>() {
      * 非空判断
      */
     private fun judge(): Boolean {
-//        if (choiceItemList.isNullOrEmpty().not()) {
-//            choiceItemList.forEach {
-//                if (it.inputString.isNullOrEmpty()) {
-//                    "请判断答案是否正确".toast()
-//                    return false
-//                }
-//            }
-//        }
+        if (choiceItemList.isNullOrEmpty().not()) {
+            choiceItemList.forEach {
+                if (it.inputString.isNullOrEmpty()) {
+                    "请判断答案是否正确".toast()
+                    return false
+                }
+            }
+        }
         return true
     }
 }

+ 2 - 5
moca/src/main/res/layout/fragment_listen_speak_result.xml

@@ -27,10 +27,9 @@
         <com.google.android.material.card.MaterialCardView
             android:id="@+id/contentLayout"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_height="@dimen/divider_180px"
             android:layout_marginTop="@dimen/divider_32px"
             android:minWidth="@dimen/divider_620px"
-            android:minHeight="@dimen/divider_264px"
             android:theme="@style/Theme.MaterialComponents.NoActionBar"
             app:cardBackgroundColor="@android:color/white"
             app:cardCornerRadius="@dimen/divider_20px"
@@ -75,9 +74,7 @@
                 <androidx.recyclerview.widget.RecyclerView
                     android:id="@+id/rvChoice"
                     android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:layout_marginTop="@dimen/divider_15px"
-                    android:layout_marginBottom="@dimen/divider_23px"
+                    android:layout_height="wrap_content"
                     app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
 
             </LinearLayout>

+ 71 - 0
moca/src/main/res/layout/item_speak_result.xml

@@ -0,0 +1,71 @@
+<?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.baselib.db.QuestionsBean" />
+    </data>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/divider_24px"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvTitle"
+            android:layout_width="@dimen/divider_260px"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/divider_16px"
+            android:background="@drawable/bg_choice_item"
+            android:padding="@dimen/divider_17px"
+            android:text="@{data.reviewItem}"
+            android:textColor="@color/txt_radio_color"
+            android:textSize="@dimen/divider_24px"
+            android:textStyle="bold"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <RadioGroup
+            android:id="@+id/radioChoice"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:orientation="horizontal"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toEndOf="@+id/tvTitle"
+            app:layout_constraintTop_toTopOf="parent">
+
+            <RadioButton
+                android:id="@+id/radioCorrect"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_marginStart="@dimen/divider_20px"
+                android:background="@drawable/selector_questions_choice"
+                android:button="@null"
+                android:text="@string/correct"
+                android:textColor="@color/txt_radio_color"
+                android:textSize="@dimen/divider_24px"
+                android:textStyle="bold" />
+
+            <RadioButton
+                android:id="@+id/radioDeny"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_marginStart="@dimen/divider_12px"
+                android:layout_marginEnd="@dimen/divider_19px"
+                android:background="@drawable/selector_questions_choice"
+                android:button="@null"
+                android:text="@string/deny"
+                android:textColor="@color/txt_radio_color"
+                android:textSize="@dimen/divider_24px"
+                android:textStyle="bold" />
+
+        </RadioGroup>
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>