From 9d2a1b1683bea08cf368f54b7220dc38ac3d22c2 Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期一, 18 一月 2021 17:47:53 +0800
Subject: [PATCH] 灯光考试项目 DB

---
 app/src/main/res/drawable/ic_add.xml                                                 |    4 
 app/src/main/assets/lightallanswers.json                                             |  149 +++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java   |   10 
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java             |    2 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerDao.java        |   35 
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java            |    8 
 app/src/main/res/drawable/aliyun_svideo_icon_upload_success.png                      |    0 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestions.java        |   52 +
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/InjectUtils.kt                |   39 +
 app/src/main/res/drawable/ic_select_no.xml                                           |    9 
 app/src/main/res/layout/light_exam_select_item.xml                                   |  113 ++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java    |    4 
 app/src/main/java/safeluck/drive/evaluation/Constant.java                            |    3 
 app/src/main/java/safeluck/drive/evaluation/adapter/LightExamUseAdapter.java         |   97 ++
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestRepository.kt    |   29 
 app/src/main/res/values/strings.xml                                                  |    3 
 app/src/main/res/drawable/ic_add_selector.xml                                        |    5 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestionsDao.java     |   36 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseInitWorker.java       |   52 +
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestionsDao.java     |   29 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestVMFactory.kt     |   16 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightQuestsViewModel.kt       |   23 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultViewModel.kt      |   39 +
 app/src/main/res/layout/fragment_light_exam_list.xml                                 |   84 ++
 app/src/main/java/safeluck/drive/evaluation/adapter/LightExamSelectAdapter.java      |  189 ++++
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestInitWorker.java  |   52 +
 app/src/main/res/drawable/divider.xml                                                |    6 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswersViewModel.kt      |   34 
 app/src/main/res/values/styles.xml                                                   |    2 
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/LuKaoFailedProj.java        |    2 
 app/src/main/assets/lightdefault.json                                                |  111 ++
 app/src/main/res/layout/light_exam_use_item.xml                                      |   33 
 app/src/main/java/safeluck/drive/evaluation/bean/Question2Answers.java               |   53 +
 app/src/main/res/drawable/ic_select_yes.xml                                          |   12 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerVMFactory.kt    |   16 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswers.java             |   51 +
 app/src/main/java/safeluck/drive/evaluation/customview/MyDecoration.java             |  101 ++
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultRepository.kt     |   51 +
 app/src/main/res/drawable/radiobutton_selector.xml                                   |    5 
 app/src/main/res/drawable/umeng_socialize_delete.png                                 |    0 
 app/src/main/res/drawable/ic_add_disable.xml                                         |    9 
 app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java     |    7 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswersRepository.kt     |   36 
 app/src/main/assets/lightAlldefault.json                                             |   94 ++
 /dev/null                                                                            |   28 
 app/src/main/java/safeluck/drive/evaluation/bean/AnswerStatus.java                   |   41 +
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultVMFactory.kt      |   16 
 app/src/main/java/safeluck/drive/evaluation/fragment/LightExamFragment.java          |  313 ++++++++
 app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java                 |   33 
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightQuestion.java            |   46 +
 app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerInitWorker.java |   55 +
 51 files changed, 2,174 insertions(+), 63 deletions(-)

diff --git a/app/src/main/assets/lightAlldefault.json b/app/src/main/assets/lightAlldefault.json
new file mode 100644
index 0000000..60a1bc0
--- /dev/null
+++ b/app/src/main/assets/lightAlldefault.json
@@ -0,0 +1,94 @@
+[
+
+  {
+
+    "id":0,
+    "question": "璇峰紑鍚墠鐓х伅",
+    "flag":1
+
+  },
+  {
+    "id":1,
+    "question": "澶滈棿鍦ㄦ病鏈夎矾鐏紝鐓ф槑涓嶈壇鏉′欢涓嬭椹�",
+    "flag":0
+  },
+  {
+    "id":2,
+    "question": "璇峰皢鍓嶇収鐏彉鎹㈡垚杩滃厜",
+    "flag":0
+  },
+  {
+
+    "id":3,
+    "question": "澶滈棿鍦ㄧ獎璺笌闈炴満鍔ㄨ溅浼氳溅",
+    "flag":0
+  },
+  {
+
+    "id":4,
+    "question": "澶滈棿鍚屾柟鍚戣繎璺濈璺熻溅琛岄┒",
+    "flag":0
+  },
+  {
+    "id":5,
+    "question": "澶滈棿鍦ㄩ亾璺笂鍙戠敓鏁呴殰锛屽Θ纰嶄氦閫氬張闅句互绉诲姩",
+    "flag":0
+  },
+  {
+    "id":6,
+    "question": "澶滈棿鍦ㄧ獎妗ヤ笌闈炴満鍔ㄨ溅浼氳溅",
+    "flag":0
+  },
+  {
+    "id":7,
+    "question": "闆惧ぉ琛岄┒",
+    "flag":0
+  },
+
+  {
+    "id":8,
+    "question": "澶滈棿涓庢満鍔ㄨ溅浼氳溅",
+    "flag":0
+  },
+  {
+    "id":9,
+    "question": "澶滈棿閫氳繃娌℃湁浜ら�氫俊鍙风伅鎺у埗鐨勮矾鍙�",
+    "flag":0
+  },
+  {
+
+    "id":10,
+    "question": "澶滈棿閫氳繃鎬ュ集銆佸潯璺�",
+    "flag":0
+  },
+  {
+    "id":11,
+    "question": "澶滈棿瓒呰秺鍓嶆柟杞﹁締",
+    "flag":0
+  },
+  {
+    "id":12,
+    "question": "鍦ㄨ矾杈逛复鏃跺仠杞�",
+    "flag":0
+  },
+  {
+    "id":13,
+    "question": "澶滈棿璺彛宸﹁浆寮�",
+    "flag":0
+  },
+  {
+    "id":14,
+    "question": "澶滈棿璺彛鍙宠浆寮�",
+    "flag":0
+  },
+  {
+    "id":15,
+    "question": "澶滈棿鍦ㄧ収鏄庤壇濂界殑閬撹矾涓婅椹�",
+    "flag":0
+  },
+  {
+    "id":16,
+    "question": "澶滈棿鐩磋閫氳繃璺彛",
+    "flag":0
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/assets/lightallanswers.json b/app/src/main/assets/lightallanswers.json
new file mode 100644
index 0000000..e6628db
--- /dev/null
+++ b/app/src/main/assets/lightallanswers.json
@@ -0,0 +1,149 @@
+[
+
+  {
+    "id":0,
+    "question_id":0,
+    "answer": "寮�鍚ぇ鐏紝娉ㄦ剰鏄繎鍏�",
+    "choose":1
+  },
+  {
+    "id":1,
+    "question_id":0,
+    "answer": "寮�鍚ぇ鐏紝杩滆繎鍏夌伅閮藉彲浠�",
+    "choose":0
+  },
+  {
+    "id":2,
+    "question_id":1,
+    "answer": "寮�鍚繙鍏夌伅",
+    "choose":1
+  },
+  {
+    "id":3,
+    "question_id":2,
+    "answer": "寮�鍚繙鍏夌伅",
+    "choose":1
+  },
+  {
+    "id":4,
+    "question_id":3,
+    "answer": "寮�鍚繎鍏夌伅",
+    "choose":1
+  },
+  {
+    "id":5,
+    "question_id":4,
+    "answer": "寮�鍚繎鍏夌伅",
+    "choose":1
+  },
+  {
+    "id":6,
+    "question_id":5,
+    "answer": "寮�鍚ず瀹界伅鍜屽嵄闄╄绀虹伅",
+    "choose":1
+  },
+  {
+    "id":7,
+    "question_id":5,
+    "answer": "寮�鍚嵄闄╄绀虹伅",
+    "choose":0
+  },
+  {
+    "id":8,
+    "question_id":6,
+    "answer": "寮�鍚繎鍏夌伅",
+    "choose":1
+  },
+  {
+    "id":9,
+    "question_id":7,
+    "answer": "澶х伅(杩戝厜鐏級+鍗遍櫓璀︾ず鐏�+闆剧伅",
+    "choose":1
+  },
+  {
+    "id":10,
+    "question_id":7,
+    "answer": "灏忕伅(绀哄鐏級+鍗遍櫓璀︾ず鐏�+闆剧伅",
+    "choose":0
+  },
+
+  {
+    "id":11,
+    "question_id":8,
+    "answer": "寮�鍚繎鍏夌伅",
+    "choose":1
+  },
+  {
+  "id":12,
+  "question_id":9,
+  "answer": "鍙樻崲杩滆繎鍏夌伅锛屽畬鎴愭搷浣滃悗浠嶄负杩戝厜",
+  "choose":1
+},
+  {
+    "id":13,
+    "question_id":10,
+    "answer": "鍙樻崲杩滆繎鍏夌伅锛屽畬鎴愭搷浣滃悗浠嶄负杩戝厜",
+    "choose":1
+  },
+  {
+    "id":14,
+    "question_id":11,
+    "answer": "鍙樻崲杩滆繎鍏夌伅锛屽畬鎴愭搷浣滃悗浠嶄负杩戝厜",
+    "choose":1
+  },
+  {
+    "id":15,
+    "question_id":11,
+    "answer": "鍏堝紑宸﹁浆鍚戠伅锛屽悗鍙樻崲杩滆繎鍏夌伅",
+    "choose":0
+  },
+  {
+    "id":16,
+    "question_id":12,
+    "answer": "寮�鍚皬鐏�(绀哄鐏級+鍗遍櫓璀︾ず鐏�",
+    "choose":1
+  },
+  {
+    "id":17,
+    "question_id":13,
+    "answer": "寮�鍚皬鐏�(绀哄鐏級+宸﹁浆鍚戠伅",
+    "choose":1
+  },
+  {
+    "id":18,
+    "question_id":13,
+    "answer": "寮�鍚繎鍏夌伅",
+    "choose":0
+  },
+  {
+    "id":19,
+    "question_id":14,
+    "answer": "寮�鍚皬鐏�(绀哄鐏級+鍙宠浆鍚戠伅",
+    "choose":1
+  },
+  {
+    "id":20,
+    "question_id":14,
+    "answer": "寮�鍚繎鍏夌伅",
+    "choose":0
+  },
+  {
+    "id":21,
+    "question_id":15,
+    "answer": "寮�鍚繎鍏夌伅",
+    "choose":1
+  },
+  {
+    "id":22,
+    "question_id":16,
+    "answer": "寮�鍚繎鍏夌伅",
+    "choose":1
+  },
+  {
+    "id":23,
+    "question_id":16,
+    "answer": "鍙樻崲杩滆繎鍏夌伅锛屽畬鎴愭搷浣滃悗浠嶄负杩戝厜",
+    "choose":0
+  }
+
+]
\ No newline at end of file
diff --git a/app/src/main/assets/lightdefault.json b/app/src/main/assets/lightdefault.json
new file mode 100644
index 0000000..7c2962b
--- /dev/null
+++ b/app/src/main/assets/lightdefault.json
@@ -0,0 +1,111 @@
+[
+
+  {
+
+    "id":0,
+    "question": "璇峰紑鍚墠鐓х伅",
+    "answer": "寮�鍚ぇ鐏紝娉ㄦ剰鏄繎鍏�",
+    "flag":1
+
+  },
+  {
+    "id":1,
+    "question": "澶滈棿鍦ㄦ病鏈夎矾鐏紝鐓ф槑涓嶈壇鏉′欢涓嬭椹�",
+    "answer": "寮�鍚繙鍏夌伅",
+    "flag":0
+  },
+  {
+    "id":2,
+    "question": "璇峰皢鍓嶇収鐏彉鎹㈡垚杩滃厜",
+    "answer": "寮�鍚繙鍏夌伅",
+    "flag":0
+  },
+  {
+
+    "id":3,
+    "question": "澶滈棿鍦ㄧ獎璺笌闈炴満鍔ㄨ溅浼氳溅",
+    "answer": "寮�鍚繎鍏夌伅",
+    "flag":0
+  },
+  {
+
+    "id":4,
+    "question": "澶滈棿鍚屾柟鍚戣繎璺濈璺熻溅琛岄┒",
+    "answer": "寮�鍚繎鍏夌伅",
+    "flag":0
+  },
+  {
+    "id":5,
+    "question": "澶滈棿鍦ㄩ亾璺笂鍙戠敓鏁呴殰锛屽Θ纰嶄氦閫氬張闅句互绉诲姩",
+    "answer": "寮�鍚ず瀹界伅鍜屽嵄闄╄绀虹伅",
+    "flag":0
+  },
+  {
+    "id":6,
+    "question": "澶滈棿鍦ㄧ獎妗ヤ笌闈炴満鍔ㄨ溅浼氳溅",
+    "answer": "寮�鍚繎鍏夌伅",
+    "flag":0
+  },
+  {
+    "id":7,
+    "question": "闆惧ぉ琛岄┒",
+    "answer": "澶х伅(杩戝厜鐏級+鍗遍櫓璀︾ず鐏�+闆剧伅",
+    "flag":0
+  },
+
+  {
+    "id":8,
+    "question": "澶滈棿涓庢満鍔ㄨ溅浼氳溅",
+    "answer": "寮�鍚繎鍏夌伅",
+    "flag":0
+  },
+  {
+    "id":9,
+    "question": "澶滈棿閫氳繃娌℃湁浜ら�氫俊鍙风伅鎺у埗鐨勮矾鍙�",
+    "answer": "鍙樻崲杩滆繎鍏夌伅锛屽畬鎴愭搷浣滃悗浠嶄负杩戝厜",
+    "flag":0
+  },
+  {
+
+    "id":10,
+    "question": "澶滈棿閫氳繃鎬ュ集銆佸潯璺�",
+    "answer": "鍙樻崲杩滆繎鍏夌伅锛屽畬鎴愭搷浣滃悗浠嶄负杩戝厜",
+    "flag":0
+  },
+  {
+    "id":11,
+    "question": "澶滈棿瓒呰秺鍓嶆柟杞﹁締",
+    "answer": "鍙樻崲杩滆繎鍏夌伅锛屽畬鎴愭搷浣滃悗浠嶄负杩戝厜",
+    "flag":0
+  },
+  {
+    "id":12,
+    "question": "鍦ㄨ矾杈逛复鏃跺仠杞�",
+    "answer": "寮�鍚皬鐏�(绀哄鐏級+鍗遍櫓璀︾ず鐏�",
+    "flag":0
+  },
+  {
+    "id":13,
+    "question": "澶滈棿璺彛宸﹁浆寮�",
+    "answer": "寮�鍚皬鐏�(绀哄鐏級+宸﹁浆鍚戠伅",
+    "flag":0
+  },
+  {
+    "id":14,
+    "question": "澶滈棿璺彛鍙宠浆寮�",
+    "answer": "寮�鍚皬鐏�(绀哄鐏級+鍙宠浆鍚戠伅",
+    "flag":0
+  },
+  {
+    "id":15,
+    "question": "澶滈棿鍦ㄧ収鏄庤壇濂界殑閬撹矾涓婅椹�",
+    "answer": "寮�鍚繎鍏夌伅",
+    "flag":0
+  },
+  {
+    "id":16,
+    "question": "澶滈棿鐩磋閫氳繃璺彛",
+    "answer": "寮�鍚繎鍏夌伅",
+    "flag":0
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index 5ca34b6..769a789 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -112,6 +112,9 @@
     public static final Integer BLUETOOTH_CONNECT = 3;
     public static final String OUR_SYS_IMAGE = "qcom/msm8909/msm8909:7.1.2/N2G47H/yy";
     public static final String BIND_EXAM_STATUS_TOPIC = "BIND_EXAM_STATUS_TOPIC";
+    public static final String LIGHT_DEFAULT_JSON = "lightdefault.json";
+    public static final String LIGHT_ALL_ANSWER_JSON = "lightallanswers.json";
+    public static final String LIGHT_ALL_DEFAULT_JSON = "lightAlldefault.json";
     public static String exam_enter_exitdata="exam_enter_exitdata";
     public static int Chang_di = 2;
     public static int DaoLu_night = 3;
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
index 352721b..51de27d 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
@@ -7,7 +7,6 @@
 import androidx.room.Database;
 import androidx.room.Room;
 import androidx.room.RoomDatabase;
-import androidx.room.migration.Migration;
 import androidx.sqlite.db.SupportSQLiteDatabase;
 import androidx.work.OneTimeWorkRequest;
 import androidx.work.WorkContinuation;
@@ -17,20 +16,16 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import okhttp3.Route;
 import safeluck.drive.evaluation.DB.appstatusdb.AppStatus;
 import safeluck.drive.evaluation.DB.appstatusdb.AppStatusDao;
 import safeluck.drive.evaluation.DB.appstatusdb.AppStatusInitWork;
 import safeluck.drive.evaluation.DB.criterias.Criteria;
 import safeluck.drive.evaluation.DB.criterias.CriteriaDao;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
-import safeluck.drive.evaluation.DB.criterias.CriteriaForII;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForIII;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForIIIWorker;
-import safeluck.drive.evaluation.DB.criterias.CriteriaForIIWorker;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForIWorker;
 import safeluck.drive.evaluation.DB.criterias.CriteriaIDao;
-import safeluck.drive.evaluation.DB.criterias.CriteriaIIDao;
 import safeluck.drive.evaluation.DB.criterias.CriteriaIIIDao;
 import safeluck.drive.evaluation.DB.criterias.CriteriaInitWorker;
 import safeluck.drive.evaluation.DB.exam_status.ExamStatus;
@@ -43,6 +38,15 @@
 import safeluck.drive.evaluation.DB.failitems.LuKaoFailedProj;
 import safeluck.drive.evaluation.DB.gps.GPSInfo;
 import safeluck.drive.evaluation.DB.gps.GpsInfoDao;
+import safeluck.drive.evaluation.DB.lightdb.LightAllAnswerDao;
+import safeluck.drive.evaluation.DB.lightdb.LightAllAnswerInitWorker;
+import safeluck.drive.evaluation.DB.lightdb.LightAllQuestInitWorker;
+import safeluck.drive.evaluation.DB.lightdb.LightAllQuestionsDao;
+import safeluck.drive.evaluation.DB.lightdb.LightAnswers;
+import safeluck.drive.evaluation.DB.lightdb.LightQuestion;
+import safeluck.drive.evaluation.DB.lightdb.LightUseInitWorker;
+import safeluck.drive.evaluation.DB.lightdb.LightUseQuestions;
+import safeluck.drive.evaluation.DB.lightdb.LightUseQuestionsDao;
 import safeluck.drive.evaluation.DB.route.RouteBean;
 import safeluck.drive.evaluation.DB.route.RouteBeanDao;
 import safeluck.drive.evaluation.DB.route.RouteCross;
@@ -64,8 +68,8 @@
  * 閭锛�632393724@qq.com
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
-@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class,LuKaoFailedProj.class, CriteriaForII.class, CriteriaForIII.class,RTKConfig.class, GPSInfo.class, AppStatus.class, ExamStatus.class, SingalConfig.class
-        , Criteria.class,RouteBean.class, RouteCross.class, RouteTriggerLine.class},version = 1,exportSchema = false)
+@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class,LuKaoFailedProj.class, LightUseQuestions.class, CriteriaForIII.class,RTKConfig.class, GPSInfo.class, AppStatus.class, ExamStatus.class, SingalConfig.class
+        , Criteria.class,RouteBean.class, RouteCross.class, RouteTriggerLine.class, LightAnswers.class, LightQuestion.class},version = 1,exportSchema = false)
 public abstract class WorkRoomDataBase extends RoomDatabase {
     private static final String TAG = "WorkRoomDataBase";
     public abstract StudentDao getstudentDao();
@@ -77,8 +81,9 @@
     public abstract CriteriaIDao getCriteriaIDao();
     //鑰冨満璇勫垽琛�
     public abstract CriteriaDao getCriteriaDao();
-    //绉戠洰浜� II绫昏�冨満璇勫垽琛�
-    public abstract CriteriaIIDao getCriteriaIIDao();
+    //鑰冨満璇勫垽琛�
+    public abstract LightUseQuestionsDao getLightUseQuestionsDao();
+
     public abstract FailProjDao getFailProjDao();
     private static volatile WorkRoomDataBase workRoomDataBase;
 
@@ -109,7 +114,9 @@
                                     OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.from(SeedDatabaseWorker.class);
                                     OneTimeWorkRequest oneTimeWorkRequest1 = OneTimeWorkRequest.from(CriteriaForIWorker.class);
                                     OneTimeWorkRequest criteriaInitWorkRequest = OneTimeWorkRequest.from(CriteriaInitWorker.class);
-//                                    OneTimeWorkRequest oneTimeWorkRequest3 = OneTimeWorkRequest.from(CriteriaForIIWorker.class);
+                                    OneTimeWorkRequest oneTimeWorkRequest3 = OneTimeWorkRequest.from(LightUseInitWorker.class);
+                                    OneTimeWorkRequest lightAllQuestInitWorker = OneTimeWorkRequest.from(LightAllQuestInitWorker.class);
+                                    OneTimeWorkRequest lightAllAnswerInitWorker = OneTimeWorkRequest.from(LightAllAnswerInitWorker.class);
                                     OneTimeWorkRequest  mCriteriaForIIIWorker= OneTimeWorkRequest.from(CriteriaForIIIWorker.class);
                                     OneTimeWorkRequest oneTimeWorkRequest2 = OneTimeWorkRequest.from(FailedProjWorker.class);
                                     OneTimeWorkRequest RTKConfigWorkRequest = OneTimeWorkRequest.from(RTKConfigWork.class);
@@ -130,7 +137,7 @@
 
 //鍗曡矾寰勬墽琛岋紝鍙互瀹炵幇鏇村姞澶嶆潅鐨勫璺緞鎵ц鏂瑰紡
                                     WorkContinuation chain1= WorkManager.getInstance(mContext).beginWith(Arrays.asList(oneTimeWorkRequest,oneTimeWorkRequest1,criteriaInitWorkRequest))
-                                            .then(mCriteriaForIIIWorker);
+                                            .then(mCriteriaForIIIWorker).then(oneTimeWorkRequest3).then(lightAllAnswerInitWorker).then(lightAllQuestInitWorker);
                                     WorkContinuation chain2 = WorkManager.getInstance(mContext).beginWith(Arrays.asList(RTKConfigWorkRequest,appStatusInitWork,signalConigInitWorker,routeInitWorker))
                                             .then(oneTimeWorkRequest2).then(examStatusInitWorker);
 
@@ -170,4 +177,8 @@
     public abstract CriteriaIIIDao getCriteriaIIIDao();
 
     public abstract LuKaoFailProjDao getLuKaoFailProjDao();
+
+    public abstract LightAllAnswerDao getLightAllAnswersDao();
+
+    public abstract LightAllQuestionsDao getLightAllQuestionsDao();
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForII.java b/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForII.java
deleted file mode 100644
index 825366c..0000000
--- a/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForII.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package safeluck.drive.evaluation.DB.criterias;
-
-import androidx.annotation.NonNull;
-import androidx.room.ColumnInfo;
-import androidx.room.Entity;
-import androidx.room.PrimaryKey;
-
-/**
- * MyApplication2
- * Created by lzw on 2019/11/26. 10:15:55
- * 閭锛�632393724@qq.com
- * All Rights Saved! Chongqing AnYun Tech co. LTD
- *
- * 绉戠洰浜� II绫昏�冨満璇勫垽鏍囧噯琛�
- */
-@Entity(tableName = "criteria_two")
-public class CriteriaForII {
-/**************
- *    item_id   item_content                    deducting_reason                     score_deducting                    required _precision
-        23                  璧锋                             杞﹂棬鏈畬鍏ㄥ叧闂捣姝�                    涓嶅悎鏍�                        琛岄┒璺濈澶т簬1m 鏃�
- **************/
-    @PrimaryKey
-    @ColumnInfo(name = "item_id")
-    @NonNull
-    private int item_id;
-
-    @ColumnInfo(name = "item_content")
-    private String item_content;
-
-    @ColumnInfo(name = "deducting_reason")
-    private String deducting_reason;
-
-
-    @NonNull @ColumnInfo(name = "score_deducting")
-    private int score_deducting;
-
-    @ColumnInfo(name = "required_precision")
-    private String required_precision;
-
-    public int getItem_id() {
-        return item_id;
-    }
-
-    public void setItem_id(int item_id) {
-        this.item_id = item_id;
-    }
-
-    public String getItem_content() {
-        return item_content;
-    }
-
-    public void setItem_content(String item_content) {
-        this.item_content = item_content;
-    }
-
-    public String getDeducting_reason() {
-        return deducting_reason;
-    }
-
-    public void setDeducting_reason(String deducting_reason) {
-        this.deducting_reason = deducting_reason;
-    }
-
-    public int getScore_deducting() {
-        return score_deducting;
-    }
-
-    public void setScore_deducting(int score_deducting) {
-        this.score_deducting = score_deducting;
-    }
-
-    public String getRequired_precision() {
-        return required_precision;
-    }
-
-    public void setRequired_precision(String required_precision) {
-        this.required_precision = required_precision;
-    }
-}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForIIWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForIIWorker.java
deleted file mode 100644
index 16155e8..0000000
--- a/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForIIWorker.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package safeluck.drive.evaluation.DB.criterias;
-
-import android.content.Context;
-
-import androidx.annotation.NonNull;
-import androidx.work.Worker;
-import androidx.work.WorkerParameters;
-
-import com.anyun.basecommonlib.MyLog;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.google.gson.stream.JsonReader;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.reflect.Type;
-import java.util.List;
-
-import safeluck.drive.evaluation.DB.Constant;
-import safeluck.drive.evaluation.DB.WorkRoomDataBase;
-
-/**
- * MyApplication2
- * Created by lzw on 2019/11/26. 11:59:25
- * 閭锛�632393724@qq.com
- * All Rights Saved! Chongqing AnYun Tech co. LTD
- */
-public class CriteriaForIIWorker extends Worker {
-
-    private static final String TAG = "CriteriaForIWorker";
-
-    public CriteriaForIIWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
-        super(context, workerParams);
-    }
-
-    @NonNull
-    @Override
-    public Result doWork() {
-        InputStream inputStream = null;
-        try {
-            inputStream = getApplicationContext().getAssets()
-                    .open(Constant.CRITERIAFOR_II_JSON);
-            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
-            JsonReader jsonReader = new JsonReader(inputStreamReader);
-            Gson gson = new Gson();
-            Type type = new TypeToken<List<CriteriaForII>>(){}.getType();
-
-            List<CriteriaForII> criteriaForIIS = gson.fromJson(jsonReader,type);
-            MyLog.i(TAG,"鎻掑叆绉戠洰浜岋紝II绫昏�冨満璇勫垽琛�");
-            WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getCriteriaIIDao().insertAllCriteriaII(criteriaForIIS);
-            return Result.success();
-        } catch (IOException e) {
-            e.printStackTrace();
-            return Result.failure();
-        }
-
-    }
-}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaIIDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaIIDao.java
deleted file mode 100644
index 7df5f01..0000000
--- a/app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaIIDao.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package safeluck.drive.evaluation.DB.criterias;
-
-import androidx.lifecycle.LiveData;
-import androidx.room.Dao;
-import androidx.room.Insert;
-import androidx.room.OnConflictStrategy;
-import androidx.room.Query;
-
-import java.util.List;
-
-
-/**
- * MyApplication2
- * Created by lzw on 2019/11/26. 11:12:18
- * 閭锛�632393724@qq.com
- * All Rights Saved! Chongqing AnYun Tech co. LTD
- */
-@Dao
-public interface CriteriaIIDao {
-    @Insert(onConflict = OnConflictStrategy.IGNORE)
-    void insertCriteriaII(CriteriaForII criteriaForII);
-
-    @Insert(onConflict = OnConflictStrategy.REPLACE)
-    void insertAllCriteriaII(List<CriteriaForII> criteriaForII);
-
-    @Query( "SELECT * FROM criteria_two WHERE item_id =:item_id")
-    LiveData<CriteriaForII > queryItemForCriteriaII(int item_id);
-}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
index 9711b5b..d3edd38 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
@@ -34,13 +34,7 @@
      */
     @Query("SELECT emp_id,stu_id, utc ,sn ,deducting_reason,score_deducting,item_content from criteria INNER JOIN fail_projects ON  criteria.item_id= fail_projects.emp_id where fail_projects.stu_id=:stu_id and fail_projects.subject=999")
     LiveData<List<FailedProj_select>> getFailedProjects(long stu_id);
-    /**
-     * 鏌ヨ 绉戠洰浜� II绫昏�冨満鐨勫け璐ラ」鐩� 锛堝琛ㄦ煡璇級
-     * 濡傛灉瑕佹坊鍔� 绉戠洰浜孖I   III绫昏�冨満澶辫触椤圭洰锛岄渶瑕佸缓绔嬬浉搴旂殑璇勫垽鏍囧噯琛ㄦ暟鎹〃
-     * @return
-     */
-    @Query("SELECT emp_id,stu_id,utc,sn,deducting_reason,score_deducting,item_content from criteria_two INNER JOIN fail_projects ON  criteria_two.item_id= fail_projects.emp_id where fail_projects.stu_id=:stu_id and fail_projects.subject=2")
-    LiveData<List<FailedProj_select>> getFailedProjectsForII(long stu_id);
+
   /**
      * 鏌ヨ 绉戠洰涓� 璺�冭�冨満鐨勫け璐ラ」鐩� 锛堝琛ㄦ煡璇級
      * 濡傛灉瑕佹坊鍔� 绉戠洰浜孖I   III绫昏�冨満澶辫触椤圭洰锛岄渶瑕佸缓绔嬬浉搴旂殑璇勫垽鏍囧噯琛ㄦ暟鎹〃
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
index 26ee63a..2a89a41 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
@@ -8,8 +8,6 @@
 
 import safeluck.drive.evaluation.DB.criterias.Criteria;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
-import safeluck.drive.evaluation.DB.criterias.CriteriaForII;
-import safeluck.drive.evaluation.DB.criterias.CriteriaForIII;
 
 import static androidx.room.ForeignKey.CASCADE;
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
index f294f3a..16433f6 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
@@ -81,15 +81,7 @@
         return failProjDao.getFailedProjects(stu_id);
     }
 
-    /**
-     * 鑾峰緱绉戠洰浜� II绫昏�冨満澶辫触椤圭洰鎵e垎椤�
-     *
-     * @param stu_id
-     * @return
-     */
-    public LiveData<List<FailedProj_select>> getFailedProjectsForII(long stu_id) {
-        return failProjDao.getFailedProjectsForII(stu_id);
-    }  /**
+  /**
      * 鑾峰緱绉戠洰涓� 璺�冭�冨満澶辫触椤圭洰鎵e垎椤�
      *
      * @param stu_id
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
index 427b442..503d2b9 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
@@ -29,9 +29,7 @@
     public  LiveData<List<FailedProj_select>> getFailedProjectsForI(long stu_id){
            return failedProjRepository.getFailedProjectsForI(stu_id);
     }
-    public  LiveData<List<FailedProj_select>> getFailedProjectsForII(long stu_id){
-           return failedProjRepository.getFailedProjectsForII(stu_id);
-    }
+
     public  LiveData<List<FailedProj_select>> getFailedProjectsForIII(long stu_id){
            return failedProjRepository.getFailedProjectsForIII(stu_id);
     }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/LuKaoFailedProj.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/LuKaoFailedProj.java
index 431c6e0..876c4cf 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/LuKaoFailedProj.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/LuKaoFailedProj.java
@@ -6,8 +6,6 @@
 import androidx.room.Index;
 import androidx.room.PrimaryKey;
 
-import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
-import safeluck.drive.evaluation.DB.criterias.CriteriaForII;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForIII;
 
 import static androidx.room.ForeignKey.CASCADE;
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/InjectUtils.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/InjectUtils.kt
new file mode 100644
index 0000000..e5b292a
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/InjectUtils.kt
@@ -0,0 +1,39 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import android.content.Context
+import safeluck.drive.evaluation.DB.WorkRoomDataBase
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 10:27:19
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+object InjectUtils{
+    fun provideLightDefaultViewModelFactory(context:Context):LightDefaultVMFactory {
+        val repository  = getLightDefaultRepository(context)
+        return LightDefaultVMFactory(repository)
+    }
+
+    private fun getLightDefaultRepository(context: Context): LightDefaultRepository {
+        return LightDefaultRepository.getInstance(WorkRoomDataBase.getWorkRoomDataBase(context).lightUseQuestionsDao)
+    }
+
+    private fun getLightAllQuestsRepository(context: Context): LightAllQuestRepository {
+        return LightAllQuestRepository.getInstance(WorkRoomDataBase.getWorkRoomDataBase(context).lightAllQuestionsDao)
+    }
+
+    fun provideLightAllQuestionViewModelFactory(context:Context):LightAllQuestVMFactory {
+        val repository  = getLightAllQuestsRepository(context)
+        return LightAllQuestVMFactory(repository)
+    }
+
+
+    fun provideLightAllAnswerViewModelFactory(context:Context):LightAllAnswerVMFactory {
+        val repository  = getLightAllAnswerRepository(context)
+        return LightAllAnswerVMFactory(repository)
+    }
+
+    private fun getLightAllAnswerRepository(context: Context): LightAnswersRepository {
+        return LightAnswersRepository.getInstance(WorkRoomDataBase.getWorkRoomDataBase(context).lightAllAnswersDao)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerDao.java
new file mode 100644
index 0000000..44a07fc
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerDao.java
@@ -0,0 +1,35 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import androidx.lifecycle.LiveData;
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 09:47:02
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Dao
+public interface LightAllAnswerDao {
+    @Insert(onConflict=OnConflictStrategy.REPLACE)
+    void insertQuestion(LightAnswers lightAnswers);
+
+    @Insert(onConflict=OnConflictStrategy.REPLACE)
+    void insertAll(List<LightAnswers> answersList);
+
+    @Query("SELECT * from light_all_answers where question_id=:question_id")
+     List<LightAnswers> getCurrQuest2Answers(int question_id);
+
+    @Query("UPDATE light_all_answers SET choose =:flag WHERE id = :id")
+    void updateAnswerChoose(int id, int flag);
+
+    @Query("SELECT * from light_all_answers ")
+    LiveData<List<LightAnswers>> getAllAnswers();
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerInitWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerInitWorker.java
new file mode 100644
index 0000000..3e53df3
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerInitWorker.java
@@ -0,0 +1,55 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import android.content.Context;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Type;
+import java.util.List;
+
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 10:40:42
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class LightAllAnswerInitWorker extends Worker {
+
+    private static final String TAG = "LightAllAnswInitWorker";
+    public LightAllAnswerInitWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+        super(context, workerParams);
+    }
+
+    @NonNull
+    @Override
+    public Result doWork() {
+
+        InputStream inputStream = null;
+        try {
+            inputStream = getApplicationContext().getAssets().open(Constant.LIGHT_ALL_ANSWER_JSON);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+        JsonReader jsonReader = new JsonReader(inputStreamReader);
+        Gson gson = new Gson();
+        Type type =new TypeToken<List<LightAnswers>>(){}.getType();
+        List<LightAnswers> questionsList = gson.fromJson(jsonReader,type);
+        Log.i(TAG,"doWork");
+        WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getLightAllAnswersDao().insertAll(questionsList);
+        return Result.success();
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerVMFactory.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerVMFactory.kt
new file mode 100644
index 0000000..a9cf5f0
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllAnswerVMFactory.kt
@@ -0,0 +1,16 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 10:29:00
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightAllAnswerVMFactory(private val resp:LightAnswersRepository):
+        ViewModelProvider.NewInstanceFactory() {
+    override fun <T : ViewModel?> create(modelClass: Class<T>): T {
+        return LightAnswersViewModel(resp) as T
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestInitWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestInitWorker.java
new file mode 100644
index 0000000..50eb508
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestInitWorker.java
@@ -0,0 +1,52 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Type;
+import java.util.List;
+
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 10:40:42
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class LightAllQuestInitWorker extends Worker {
+
+    public LightAllQuestInitWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+        super(context, workerParams);
+    }
+
+    @NonNull
+    @Override
+    public Result doWork() {
+
+        InputStream inputStream = null;
+        try {
+            inputStream = getApplicationContext().getAssets().open(Constant.LIGHT_ALL_DEFAULT_JSON);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+        JsonReader jsonReader = new JsonReader(inputStreamReader);
+        Gson gson = new Gson();
+        Type type =new TypeToken<List<LightQuestion>>(){}.getType();
+        List<LightQuestion> questionsList = gson.fromJson(jsonReader,type);
+        WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getLightAllQuestionsDao().insertAll(questionsList);
+        return Result.success();
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestRepository.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestRepository.kt
new file mode 100644
index 0000000..6ad7c96
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestRepository.kt
@@ -0,0 +1,29 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import kotlinx.coroutines.Dispatchers.IO
+import kotlinx.coroutines.withContext
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 10:01:31
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightAllQuestRepository private constructor(
+        private val lightdefaulDao: LightAllQuestionsDao
+){
+
+
+
+
+    fun getLightAllQuestions() = lightdefaulDao.allLightQuestions
+
+
+    companion object{
+        @Volatile
+        private var instance:LightAllQuestRepository ?= null
+
+        fun getInstance(lightdefaulDao: LightAllQuestionsDao)= instance?: synchronized(this){
+                instance?: LightAllQuestRepository(lightdefaulDao).also { instance = it }
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestVMFactory.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestVMFactory.kt
new file mode 100644
index 0000000..8de5314
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestVMFactory.kt
@@ -0,0 +1,16 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 10:29:00
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightAllQuestVMFactory(private val resp:LightAllQuestRepository):
+        ViewModelProvider.NewInstanceFactory() {
+    override fun <T : ViewModel?> create(modelClass: Class<T>): T {
+        return LightQuestsViewModel(resp) as T
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestionsDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestionsDao.java
new file mode 100644
index 0000000..3e7420c
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAllQuestionsDao.java
@@ -0,0 +1,29 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import androidx.lifecycle.LiveData;
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+
+import java.util.List;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 09:47:02
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Dao
+public interface LightAllQuestionsDao {
+    @Insert(onConflict=OnConflictStrategy.REPLACE)
+    void insertQuestion(LightQuestion lightQuestions);
+
+    @Insert(onConflict=OnConflictStrategy.REPLACE)
+    void insertAll(List<LightQuestion> questionsList);
+
+    @Query("SELECT * FROM alllight_question")
+    List<LightQuestion> getAllLightQuestions();
+
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswers.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswers.java
new file mode 100644
index 0000000..66313e3
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswers.java
@@ -0,0 +1,51 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 13:32:56
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Entity(tableName = "light_all_answers")
+public class LightAnswers {
+   @ PrimaryKey
+    private int id;
+   private int question_id;
+   private String answer;
+   private int choose;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getQuestion_id() {
+        return question_id;
+    }
+
+    public void setQuestion_id(int question_id) {
+        this.question_id = question_id;
+    }
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer;
+    }
+
+    public int getChoose() {
+        return choose;
+    }
+
+    public void setChoose(int choose) {
+        this.choose = choose;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswersRepository.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswersRepository.kt
new file mode 100644
index 0000000..4f67835
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswersRepository.kt
@@ -0,0 +1,36 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import kotlinx.coroutines.Dispatchers.IO
+import kotlinx.coroutines.withContext
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 10:01:31
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightAnswersRepository private constructor(
+        private val lightdefaulDao: LightAllAnswerDao
+){
+
+
+
+
+   fun getLightAllQuestions(question_id:Int) =lightdefaulDao.getCurrQuest2Answers(question_id)
+   suspend fun updateAnswerChoose(id: Int, flag: Int) {
+        withContext(IO){
+            lightdefaulDao.updateAnswerChoose(id,flag);
+        }
+    }
+
+    fun getLightAllAnswers()=lightdefaulDao.getAllAnswers()
+
+
+    companion object{
+        @Volatile
+        private var instance:LightAnswersRepository ?= null
+
+        fun getInstance(lightdefaulDao: LightAllAnswerDao)= instance?: synchronized(this){
+                instance?: LightAnswersRepository(lightdefaulDao).also { instance = it }
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswersViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswersViewModel.kt
new file mode 100644
index 0000000..b85e448
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightAnswersViewModel.kt
@@ -0,0 +1,34 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.cancel
+import kotlinx.coroutines.launch
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 09:46:49
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightAnswersViewModel internal constructor(private  val lightDefaultRepository: LightAnswersRepository): ViewModel() {
+    fun getQustion2Answer(quest_id:Int) =lightDefaultRepository.getLightAllQuestions(quest_id)
+
+
+
+
+    @ExperimentalCoroutinesApi
+    override fun onCleared() {
+        super.onCleared()
+        viewModelScope.cancel()
+    }
+
+    fun updateAnswerChoose(id: Int, i: Int) {
+        viewModelScope.launch {
+            lightDefaultRepository.updateAnswerChoose(id,i)
+        }
+    }
+
+    fun getAllAnswers() =lightDefaultRepository.getLightAllAnswers()
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultRepository.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultRepository.kt
new file mode 100644
index 0000000..5e5957b
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultRepository.kt
@@ -0,0 +1,51 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import kotlinx.coroutines.Dispatchers.IO
+import kotlinx.coroutines.withContext
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 10:01:31
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightDefaultRepository private constructor(
+        private val lightdefaulDao: LightUseQuestionsDao
+){
+    suspend fun removeItem(lightusequest:LightUseQuestions){
+        withContext(IO){
+            lightdefaulDao.deleteItem(lightusequest)
+        }
+    }
+
+
+
+    fun getLightUseQuestions() = lightdefaulDao.getLightUseQuestions()
+   suspend fun updateQuest2Answer(questionId: Int, answ: String) {
+       withContext(IO){
+
+        lightdefaulDao.updateAnswer(questionId,answ)
+       }
+    }
+
+    suspend fun addItem(questionId: Int, question: String, flag: Int,answ:String) {
+        withContext(IO){
+
+            var lightquest = LightUseQuestions()
+            lightquest.question  = question
+            lightquest.id = questionId
+            lightquest.flag = flag
+            lightquest.answer = answ
+            lightdefaulDao.insertQuestion(lightquest)
+        }
+    }
+
+
+    companion object{
+        @Volatile
+        private var instance:LightDefaultRepository ?= null
+
+        fun getInstance(lightdefaulDao: LightUseQuestionsDao)= instance?: synchronized(this){
+                instance?: LightDefaultRepository(lightdefaulDao).also { instance = it }
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultVMFactory.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultVMFactory.kt
new file mode 100644
index 0000000..f557169
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultVMFactory.kt
@@ -0,0 +1,16 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 10:29:00
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightDefaultVMFactory(private val resp:LightDefaultRepository):
+        ViewModelProvider.NewInstanceFactory() {
+    override fun <T : ViewModel?> create(modelClass: Class<T>): T {
+        return LightDefaultViewModel(resp) as T
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultViewModel.kt
new file mode 100644
index 0000000..19e4744
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightDefaultViewModel.kt
@@ -0,0 +1,39 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.cancel
+import kotlinx.coroutines.launch
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 09:46:49
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightDefaultViewModel internal constructor(private  val lightDefaultRepository: LightDefaultRepository): ViewModel() {
+    var allDefaultQuestion2Answers = lightDefaultRepository.getLightUseQuestions()
+    fun  deleteItem(lightUseQuestions: LightUseQuestions){
+        viewModelScope.launch {
+            lightDefaultRepository.removeItem(lightUseQuestions)
+        }
+    }
+    @ExperimentalCoroutinesApi
+    override fun onCleared() {
+        super.onCleared()
+        viewModelScope.cancel()
+    }
+
+    fun updateQuestion2Answer(questionId: Int, answ: String) {
+            viewModelScope.launch {
+                lightDefaultRepository.updateQuest2Answer(questionId,answ)
+            }
+    }
+
+    fun addItem(questionId: Int, Question: String, flag: Int,answer:String) {
+        viewModelScope.launch {
+            lightDefaultRepository.addItem(questionId,Question,flag,answer)
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightQuestion.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightQuestion.java
new file mode 100644
index 0000000..b28cc79
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightQuestion.java
@@ -0,0 +1,46 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 13:31:11
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Entity(tableName = "alllight_question")
+public class LightQuestion {
+    @PrimaryKey
+    private int id;
+
+    private String question;
+
+    private int flag;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getQuestion() {
+        return question;
+    }
+
+    public void setQuestion(String question) {
+        this.question = question;
+    }
+
+
+
+    public int getFlag() {
+        return flag;
+    }
+
+    public void setFlag(int flag) {
+        this.flag = flag;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightQuestsViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightQuestsViewModel.kt
new file mode 100644
index 0000000..4700c0f
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightQuestsViewModel.kt
@@ -0,0 +1,23 @@
+package safeluck.drive.evaluation.DB.lightdb
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.cancel
+import kotlinx.coroutines.launch
+
+/**DriveJudge
+ * Created by lzw on 2021/1/15. 09:46:49
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+class LightQuestsViewModel internal constructor(private  val lightDefaultRepository: LightAllQuestRepository): ViewModel() {
+    var allDefaultQuestion2Answers = lightDefaultRepository.getLightAllQuestions()
+
+    @ExperimentalCoroutinesApi
+    override fun onCleared() {
+        super.onCleared()
+        viewModelScope.cancel()
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseInitWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseInitWorker.java
new file mode 100644
index 0000000..9276e7d
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseInitWorker.java
@@ -0,0 +1,52 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Type;
+import java.util.List;
+
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 10:40:42
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class LightUseInitWorker extends Worker {
+
+    public LightUseInitWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+        super(context, workerParams);
+    }
+
+    @NonNull
+    @Override
+    public Result doWork() {
+
+        InputStream inputStream = null;
+        try {
+            inputStream = getApplicationContext().getAssets().open(Constant.LIGHT_DEFAULT_JSON);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+        JsonReader jsonReader = new JsonReader(inputStreamReader);
+        Gson gson = new Gson();
+        Type type =new TypeToken<List<LightUseQuestions>>(){}.getType();
+        List<LightUseQuestions> questionsList = gson.fromJson(jsonReader,type);
+        WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getLightUseQuestionsDao().insertAll(questionsList);
+        return Result.success();
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestions.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestions.java
new file mode 100644
index 0000000..7dff663
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestions.java
@@ -0,0 +1,52 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 09:44:23
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Entity(tableName = "lightUseQuest")
+public class LightUseQuestions {
+    @PrimaryKey
+    private int id;
+
+    private String question;
+    private String answer;
+    private int flag;//  1-涓嶅彲鍒犻櫎  0-鍙垹闄�
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getQuestion() {
+        return question;
+    }
+
+    public void setQuestion(String question) {
+        this.question = question;
+    }
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer;
+    }
+
+    public int getFlag() {
+        return flag;
+    }
+
+    public void setFlag(int flag) {
+        this.flag = flag;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestionsDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestionsDao.java
new file mode 100644
index 0000000..2aeed11
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestionsDao.java
@@ -0,0 +1,36 @@
+package safeluck.drive.evaluation.DB.lightdb;
+
+import androidx.lifecycle.LiveData;
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 09:47:02
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Dao
+public interface LightUseQuestionsDao {
+    @Insert(onConflict=OnConflictStrategy.REPLACE)
+    void insertQuestion(LightUseQuestions lightUseQuestions);
+    @Query("Update lightUseQuest set answer=:ans where id=:id")
+    void updateAnswer(int id,String ans);
+    @Insert(onConflict=OnConflictStrategy.REPLACE)
+    void insertAll(List<LightUseQuestions> questionsList);
+
+    @Delete
+    void deleteItem(LightUseQuestions lightUseQuestions);
+
+    @Query("SELECT * FROM lightUseQuest")
+    LiveData<List<LightUseQuestions>> getLightUseQuestions();
+
+
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/adapter/LightExamSelectAdapter.java b/app/src/main/java/safeluck/drive/evaluation/adapter/LightExamSelectAdapter.java
new file mode 100644
index 0000000..7f3f2f5
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/adapter/LightExamSelectAdapter.java
@@ -0,0 +1,189 @@
+package safeluck.drive.evaluation.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CompoundButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RadioButton;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.AnswerStatus;
+import safeluck.drive.evaluation.bean.Question2Answers;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/13. 14:42:59
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class LightExamSelectAdapter extends RecyclerView.Adapter<LightExamSelectAdapter.MyViewHolder> {
+
+    private LayoutInflater inflater;
+    private Context mContext;
+
+    OnCheckedListener onCheckedListener;
+    OnAddItemListener onAddItemListener;
+    //璁板綍RadioButton鐨勭姸鎬�
+    public HashMap<Integer, String> state_boolean = new HashMap<>();
+    private List<Question2Answers> question2AnswersList = new ArrayList<>();
+
+    public LightExamSelectAdapter(Context context) {
+        this.inflater = LayoutInflater.from(context);
+        this.mContext = context;
+    }
+
+    public void setOnCheckedListener(OnCheckedListener checkedListener){
+        this.onCheckedListener = checkedListener;
+    }
+
+    public void setOnAddItemListener(OnAddItemListener onAddItemListener){
+        this.onAddItemListener = onAddItemListener;
+    }
+
+    public interface OnCheckedListener{
+        //position 璺焣uestion鍏宠仈 涔熷氨鏄痲uestion_id;
+        void checked(int position,int whichAnswer);
+    }
+
+    public interface OnAddItemListener{
+        void add(int pos);
+    }
+
+    @NonNull
+    @Override
+    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = inflater.inflate(R.layout.light_exam_select_item,parent,false);
+        MyViewHolder myViewHolder = new MyViewHolder(view);
+        return myViewHolder;
+    }
+
+    public void setDatas(List<Question2Answers> answers){
+        question2AnswersList.clear();
+        question2AnswersList.addAll(answers);
+        notifyDataSetChanged();
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
+        Question2Answers question2Answers = question2AnswersList.get(position);
+        holder.tv_question.setText(question2Answers.getQuestion());
+        List<AnswerStatus> answerList = question2Answers.getAnswerStatusList();
+
+        holder.linearLayout2.setVisibility(View.GONE);holder.linearLayout3.setVisibility(View.GONE);
+        holder.rb1.setOnCheckedChangeListener(null);
+
+
+        holder.tv_answer1.setText(String.format(mContext.getResources().getString(R.string.answer),question2Answers.getAnswerStatusList().get(0).getAnswer()));
+        holder.rb1.setChecked(question2Answers.getAnswerStatusList().get(0).getChoose_flag()==1?true:false);
+
+
+
+        switch (answerList.size()){
+            case 2:
+                holder.linearLayout2.setVisibility(View.VISIBLE);
+                AnswerStatus answerStatus1 = answerList.get(1);
+                holder.rb2.setOnCheckedChangeListener(null);
+                holder.tv_answer2.setText(String.format(mContext.getResources().getString(R.string.answer),answerStatus1.getAnswer()));
+                holder.rb2.setChecked(answerStatus1.getChoose_flag()==1?true:false);
+                break;
+            case 3:
+                holder.linearLayout2.setVisibility(View.VISIBLE);holder.linearLayout3.setVisibility(View.VISIBLE);
+                AnswerStatus answerStatus2= answerList.get(1);
+                AnswerStatus answerStatus3= answerList.get(2);
+                holder.rb2.setOnCheckedChangeListener(null);        holder.rb3.setOnCheckedChangeListener(null);
+                holder.tv_answer2.setText(String.format(mContext.getResources().getString(R.string.answer),answerStatus2.getAnswer()));
+                holder.tv_answer3.setText(String.format(mContext.getResources().getString(R.string.answer),answerStatus3.getAnswer()));
+
+                holder.rb2.setChecked(answerStatus2.getChoose_flag()==1?true:false);
+                holder.rb3.setChecked(answerStatus3.getChoose_flag()==1?true:false);
+                break;
+        }
+
+        holder.imageView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (onAddItemListener != null){
+                    onAddItemListener.add(position);
+                }
+            }
+        });
+        holder.rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked){
+                    holder.rb2.setChecked(false);
+                    holder.rb3.setChecked(false);
+                    if (onCheckedListener!=null){
+                        onCheckedListener.checked(position,0);
+                    }
+                }
+            }
+        });        holder.rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked){
+                    holder.rb1.setChecked(false);
+                    holder.rb3.setChecked(false);
+                    onCheckedListener.checked(position,1);
+                }
+            }
+        });        holder.rb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                if (isChecked){
+                    holder.rb1.setChecked(false);
+                    holder.rb2.setChecked(false);
+                    onCheckedListener.checked(position,2);
+                }
+            }
+        });
+
+    }
+
+    @Override
+    public int getItemCount() {
+        return question2AnswersList.size();
+    }
+
+    public class MyViewHolder extends RecyclerView.ViewHolder {
+
+        TextView tv_question;
+        TextView tv_answer1;
+        TextView tv_answer2;
+        TextView tv_answer3;
+
+        ImageView imageView;
+
+        RadioButton rb1,rb2,rb3;
+
+        LinearLayout linearLayout2,linearLayout3;
+
+        public MyViewHolder(@NonNull View itemView) {
+            super(itemView);
+            linearLayout2 = itemView.findViewById(R.id.ll_light_container2);
+            linearLayout3 = itemView.findViewById(R.id.ll_light_container3);
+            imageView = itemView.findViewById(R.id.iv_delete_item);
+
+            tv_question = itemView.findViewById(R.id.tv_question);
+            tv_answer1 = itemView.findViewById(R.id.tv_answer1);
+            tv_answer2 = itemView.findViewById(R.id.tv_answer2);
+            tv_answer3 = itemView.findViewById(R.id.tv_answer3);
+
+            rb1 = itemView.findViewById(R.id.rb1_light);
+            rb2 = itemView.findViewById(R.id.rb2_light);
+            rb3 = itemView.findViewById(R.id.rb3_light);
+        }
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/adapter/LightExamUseAdapter.java b/app/src/main/java/safeluck/drive/evaluation/adapter/LightExamUseAdapter.java
new file mode 100644
index 0000000..411a46a
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/adapter/LightExamUseAdapter.java
@@ -0,0 +1,97 @@
+package safeluck.drive.evaluation.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import safeluck.drive.evaluation.DB.lightdb.LightUseQuestions;
+import safeluck.drive.evaluation.R;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/13. 14:42:59
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class LightExamUseAdapter extends RecyclerView.Adapter<LightExamUseAdapter.MyViewHolder> {
+
+    private LayoutInflater mLayoutInflater;
+    private Context mContext;
+    private List<LightUseQuestions> examsBeans = new ArrayList<>();
+    public LightExamUseAdapter(Context context) {
+        this.mContext = context;
+        mLayoutInflater = LayoutInflater.from(context);
+    }
+
+    private OnDeleteListener onDeleteListener;
+
+    public interface OnDeleteListener{
+        void delete(int position);
+    }
+
+    public void setOnDeleteListener(OnDeleteListener deleteListener){
+        this.onDeleteListener = deleteListener;
+    }
+
+    @NonNull
+    @Override
+    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = mLayoutInflater.inflate(R.layout.light_exam_use_item,parent,false);
+        MyViewHolder myViewHolder = new MyViewHolder(view);
+        return myViewHolder;
+    }
+
+    public void setDatas(List<LightUseQuestions> lightExamsBeanList){
+        this.examsBeans.clear();
+        this.examsBeans.addAll(lightExamsBeanList);
+        notifyDataSetChanged();
+    }
+    @Override
+    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
+        LightUseQuestions bean = examsBeans.get(position);
+        holder.tv_answer.setText(String.format(mContext.getResources().getString(R.string.answer),bean.getAnswer()));
+        holder.tv_question.setText(bean.getQuestion());
+        holder.imageView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (bean.getFlag() == 1){
+
+                }else{
+                    if (onDeleteListener != null){
+                        Toast.makeText(mContext, String.format("绗�%d涓鐩鍒犻櫎!",position), Toast.LENGTH_SHORT).show();
+                        onDeleteListener.delete(position);
+                    }
+                }
+
+            }
+        });
+
+    }
+
+    @Override
+    public int getItemCount() {
+        return examsBeans.size();
+    }
+
+    public class MyViewHolder extends RecyclerView.ViewHolder {
+        TextView tv_question;
+        TextView tv_answer;
+        ImageView imageView ;
+        public MyViewHolder(@NonNull View itemView) {
+            super(itemView);
+            tv_answer = itemView.findViewById(R.id.tv_answer);
+            tv_question = itemView.findViewById(R.id.tv_question);
+            imageView = itemView.findViewById(R.id.iv_delete_item);
+        }
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/AnswerStatus.java b/app/src/main/java/safeluck/drive/evaluation/bean/AnswerStatus.java
new file mode 100644
index 0000000..bc0b0d8
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/AnswerStatus.java
@@ -0,0 +1,41 @@
+package safeluck.drive.evaluation.bean;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/15. 15:17:18
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class AnswerStatus {
+    // 1- xuanzhong
+
+    private int choose_flag;
+
+    private int id;
+
+    private String answer;
+
+    public int getChoose_flag() {
+        return choose_flag;
+    }
+
+    public void setChoose_flag(int choose_flag) {
+        this.choose_flag = choose_flag;
+    }
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getId() {
+        return id;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/Question2Answers.java b/app/src/main/java/safeluck/drive/evaluation/bean/Question2Answers.java
new file mode 100644
index 0000000..fe212af
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/Question2Answers.java
@@ -0,0 +1,53 @@
+package safeluck.drive.evaluation.bean;
+
+import java.util.List;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/14. 14:58:26
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class Question2Answers {
+
+    private String question;
+    private int question_id;
+    private List<AnswerStatus> answerStatusList;
+    //1-宸茬粡娣诲姞鍒� 浣跨敤鐨勯鐩�  0-鏄病鏈夌敯闂�
+
+    private int add_flag;
+
+    public List<AnswerStatus> getAnswerStatusList() {
+        return answerStatusList;
+    }
+
+
+    public int getQuestion_id() {
+        return question_id;
+    }
+
+    public void setQuestion_id(int question_id) {
+        this.question_id = question_id;
+    }
+
+    public void setAnswerStatusList(List<AnswerStatus> answerStatusList) {
+        this.answerStatusList = answerStatusList;
+    }
+
+    public int getAdd_flag() {
+        return add_flag;
+    }
+
+    public void setAdd_flag(int add_flag) {
+        this.add_flag = add_flag;
+    }
+
+    public String getQuestion() {
+        return question;
+    }
+
+    public void setQuestion(String question) {
+        this.question = question;
+    }
+
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/customview/MyDecoration.java b/app/src/main/java/safeluck/drive/evaluation/customview/MyDecoration.java
new file mode 100644
index 0000000..901eb70
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/customview/MyDecoration.java
@@ -0,0 +1,101 @@
+package safeluck.drive.evaluation.customview;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.view.View;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2021/1/13. 17:09:58
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class MyDecoration extends RecyclerView.ItemDecoration{
+
+    private Context mContext;
+    private Drawable mDivider;
+    private int mOrientation;
+    public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
+    public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;
+
+    //鎴戜滑閫氳繃鑾峰彇绯荤粺灞炴�т腑鐨刲istDivider鏉ユ坊鍔狅紝鍦ㄧ郴缁熶腑鐨凙ppTheme涓缃�
+    public static final int[] ATRRS = new int[]{
+            android.R.attr.listDivider
+    };
+
+    public MyDecoration(Context context, int orientation) {
+        this.mContext = context;
+        final TypedArray ta = context.obtainStyledAttributes(ATRRS);
+        this.mDivider = ta.getDrawable(0);
+        ta.recycle();
+        setOrientation(orientation);
+    }
+
+    //璁剧疆灞忓箷鐨勬柟鍚�
+    public void setOrientation(int orientation){
+        if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST){
+            throw new IllegalArgumentException("invalid orientation");  }  mOrientation = orientation;
+    }
+
+    @Override
+    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
+        if (mOrientation == HORIZONTAL_LIST){
+            drawVerticalLine(c, parent, state);
+        }else {
+            drawHorizontalLine(c, parent, state);
+        }
+    }
+
+    //鐢绘í绾�, 杩欓噷鐨刾arent鍏跺疄鏄樉绀哄湪灞忓箷鏄剧ず鐨勮繖閮ㄥ垎
+    public void drawHorizontalLine(Canvas c, RecyclerView parent, RecyclerView.State state){
+        int left = parent.getPaddingLeft();
+        int right = parent.getWidth() - parent.getPaddingRight();
+        final int childCount = parent.getChildCount();
+        for (int i = 0; i < childCount; i++){
+            final View child = parent.getChildAt(i);
+
+            //鑾峰緱child鐨勫竷灞�淇℃伅
+            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams)child.getLayoutParams();
+            final int top = child.getBottom() + params.bottomMargin;
+            final int bottom = top + mDivider.getIntrinsicHeight();
+            mDivider.setBounds(left, top, right, bottom);
+            mDivider.draw(c);
+            //Log.d("wnw", left + " " + top + " "+right+" "+bottom+" "+i);
+        }
+    }
+
+    //鐢荤珫绾�
+    public void drawVerticalLine(Canvas c, RecyclerView parent, RecyclerView.State state){
+        int top = parent.getPaddingTop();
+        int bottom = parent.getHeight() - parent.getPaddingBottom();
+        final int childCount = parent.getChildCount();
+        for (int i = 0; i < childCount; i++){
+            final View child = parent.getChildAt(i);
+
+            //鑾峰緱child鐨勫竷灞�淇℃伅
+            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams)child.getLayoutParams();
+            final int left = child.getRight() + params.rightMargin;
+            final int right = left + mDivider.getIntrinsicWidth();
+            mDivider.setBounds(left, top, right, bottom);
+            mDivider.draw(c);
+        }
+    }
+
+    //鐢变簬Divider涔熸湁闀垮楂橈紝姣忎竴涓狪tem闇�瑕佸悜涓嬫垨鑰呭悜鍙冲亸绉�
+    @Override
+    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+        if(mOrientation == HORIZONTAL_LIST){
+            //鐢绘í绾匡紝灏辨槸寰�涓嬪亸绉讳竴涓垎鍓茬嚎鐨勯珮搴�
+            outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
+        }else {
+            //鐢荤珫绾匡紝灏辨槸寰�鍙冲亸绉讳竴涓垎鍓茬嚎鐨勫搴�
+            outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/LightExamFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/LightExamFragment.java
new file mode 100644
index 0000000..f5053dc
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/LightExamFragment.java
@@ -0,0 +1,313 @@
+package safeluck.drive.evaluation.fragment;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.WorkManager;
+
+import com.anyun.exam.lib.AYSdk;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import me.yokeyword.fragmentation.SupportFragment;
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+import safeluck.drive.evaluation.DB.lightdb.InjectUtils;
+
+import safeluck.drive.evaluation.DB.lightdb.LightAllAnswerDao;
+import safeluck.drive.evaluation.DB.lightdb.LightAllAnswerVMFactory;
+import safeluck.drive.evaluation.DB.lightdb.LightAnswers;
+import safeluck.drive.evaluation.DB.lightdb.LightAnswersViewModel;
+import safeluck.drive.evaluation.DB.lightdb.LightDefaultVMFactory;
+import safeluck.drive.evaluation.DB.lightdb.LightDefaultViewModel;
+import safeluck.drive.evaluation.DB.lightdb.LightQuestion;
+import safeluck.drive.evaluation.DB.lightdb.LightQuestsViewModel;
+import safeluck.drive.evaluation.DB.lightdb.LightUseInitWorker;
+import safeluck.drive.evaluation.DB.lightdb.LightUseQuestions;
+import safeluck.drive.evaluation.MainActivity;
+import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.adapter.LightExamSelectAdapter;
+import safeluck.drive.evaluation.adapter.LightExamUseAdapter;
+import safeluck.drive.evaluation.bean.AnswerStatus;
+import safeluck.drive.evaluation.bean.Question2Answers;
+import safeluck.drive.evaluation.customview.MyDecoration;
+
+import safeluck.drive.evaluation.util.CThreadPoolExecutor;
+
+/**
+ * DriveJudge
+ * Created by lzw on 2020/9/1. 11:40:50
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class LightExamFragment extends SupportFragment implements View.OnClickListener {
+
+    public static int UPGRADE_17_FRONT = 1;
+    public static int UPGRADE_17_AFTER = 0;
+
+
+    private final static String TAG = LightExamFragment.class.getSimpleName();
+    private Toolbar mToolbar;
+    private RecyclerView recyclerView_use;
+    private RecyclerView recyclerView_select;
+
+    private LightExamUseAdapter lightExamUseAdapter;
+
+    private LightDefaultViewModel lightDefaultViewModel;
+
+    private LightAnswersViewModel lightAnswersViewModel;
+    private List<LightUseQuestions> lightExamsBeans = new ArrayList<>();
+    private List<Question2Answers> answersList = new ArrayList<>();
+    private LightExamSelectAdapter lightExamSelectAdapter;
+
+    private List<LightAnswers> lightAnswerList = new ArrayList<>();
+
+
+    public static LightExamFragment newInstance() {
+        LightExamFragment bleScanFragment = new LightExamFragment();
+        return bleScanFragment;
+    }
+
+    private void initListView() {
+        // listView 鏄剧ず
+
+        lightExamUseAdapter = new LightExamUseAdapter(_mActivity);
+        lightExamUseAdapter.setOnDeleteListener(new LightExamUseAdapter.OnDeleteListener() {
+            @Override
+            public void delete(int position) {
+                lightDefaultViewModel.deleteItem(lightExamsBeans.get(position));
+            }
+        });
+        lightExamSelectAdapter = new LightExamSelectAdapter(_mActivity);
+
+
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(_mActivity);
+        LinearLayoutManager linearLayoutManager_use = new LinearLayoutManager(_mActivity);
+        recyclerView_use.setLayoutManager(linearLayoutManager_use);
+        recyclerView_select.setLayoutManager(linearLayoutManager);
+
+        lightExamSelectAdapter.setOnCheckedListener(new LightExamSelectAdapter.OnCheckedListener() {
+            @Override
+            public void checked(int position, int whichAnswer) {
+                Log.i(TAG, "閫変腑鐨刾osition=" + position + " whick answer=" + whichAnswer);
+                Question2Answers question2Answer = answersList.get(position);
+                int questionId = question2Answer.getQuestion_id();
+                List<AnswerStatus> answerStatusList = question2Answer.getAnswerStatusList();
+                AnswerStatus answerStatus = answerStatusList.get(whichAnswer);
+                String answ = answerStatus.getAnswer();
+                Log.i(TAG, String.format("闂[%s]閫変腑鐨勭瓟妗�=%s", question2Answer.getQuestion(), answ));
+                lightDefaultViewModel.updateQuestion2Answer(questionId, answ);
+
+                lightAnswersViewModel.updateAnswerChoose(answerStatus.getId(), 1);
+                for (int i = 0; i < answerStatusList.size(); i++) {
+                    if (i != whichAnswer) {
+                        int id = answerStatusList.get(i).getId();
+                        lightAnswersViewModel.updateAnswerChoose(id, 0);
+                    }
+                }
+            }
+        });
+        lightExamSelectAdapter.setOnAddItemListener(new LightExamSelectAdapter.OnAddItemListener() {
+            @Override
+            public void add(int pos) {
+                boolean flag = false;
+                for (int i = 0; i < lightExamsBeans.size(); i++) {
+                    LightUseQuestions li =lightExamsBeans.get(i);
+                    if (li!=null && li.getId()==pos){
+                        flag =true;
+                        break;
+                    }
+                }
+                if (flag){
+                    Toast.makeText(_mActivity, "宸茬粡娣诲姞锛屾棤闇�鍐嶆娣诲姞", Toast.LENGTH_SHORT).show();
+                }else{
+                    List<AnswerStatus> answerList = answersList.get(pos).getAnswerStatusList();
+                    String answer="";
+                    for (int j = 0; j < answerList.size(); j++) {
+                        AnswerStatus an = answerList.get(j);
+                        LightAnswers lightAnswers = lightAnswerList.get(an.getId());
+                            if ( lightAnswers .getChoose()==1){
+                                answer = lightAnswers.getAnswer();
+                                break;
+                            }
+                    }
+
+                    lightDefaultViewModel.addItem(pos,answersList.get(pos).getQuestion(),0,answer);
+                }
+
+            }
+        });
+        recyclerView_select.setAdapter(lightExamSelectAdapter);
+        recyclerView_use.setAdapter(lightExamUseAdapter);
+        recyclerView_select.addItemDecoration(new MyDecoration(_mActivity, MyDecoration.VERTICAL_LIST));
+        recyclerView_use.addItemDecoration(new MyDecoration(_mActivity, MyDecoration.VERTICAL_LIST));
+
+
+    }
+
+    /**
+     * 鍒濆鍖栧垪琛�
+     */
+    private void initView(View view) {
+        mToolbar = (Toolbar) view.findViewById(R.id.toolbar);
+        mToolbar.setTitle("鐏厜鑰冭瘯棰樼洰");
+        recyclerView_select = view.findViewById(R.id.recyclerview_select);
+        recyclerView_use = view.findViewById(R.id.recyclerview_useexams);
+        view.findViewById(R.id.btn_light_cancle).setOnClickListener(this);
+        view.findViewById(R.id.btn_light_sure).setOnClickListener(this);
+        view.findViewById(R.id.btn_light_default).setOnClickListener(this);
+        initListView();
+        LightDefaultVMFactory lightDefaultVMFactory = InjectUtils.INSTANCE.provideLightDefaultViewModelFactory(requireContext());
+        LightAllAnswerVMFactory lightAllAnswerVMFactory = InjectUtils.INSTANCE.provideLightAllAnswerViewModelFactory(requireContext());
+        lightDefaultViewModel = ViewModelProviders.of(this, lightDefaultVMFactory).get(LightDefaultViewModel.class);
+        lightAnswersViewModel = ViewModelProviders.of(this, lightAllAnswerVMFactory).get(LightAnswersViewModel.class);
+        lightAnswersViewModel.getAllAnswers().observe(this, new Observer<List<LightAnswers>>() {
+            @Override
+            public void onChanged(List<LightAnswers> lightAnswers) {
+                lightAnswerList.clear();
+                lightAnswerList.addAll(lightAnswers);
+            }
+        });
+        CThreadPoolExecutor.runInBackground(new Runnable() {
+            @Override
+            public void run() {
+                List<LightQuestion> lightQuestions = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getLightAllQuestionsDao().getAllLightQuestions();
+                LightAllAnswerDao lightAllAnswerDao = WorkRoomDataBase.getWorkRoomDataBase(_mActivity).getLightAllAnswersDao();
+                for (int i = 0; i < lightQuestions.size(); i++) {
+                    LightQuestion lightQuestion = lightQuestions.get(i);
+                    int question_id = lightQuestion.getId();
+                    String question = lightQuestion.getQuestion();
+                    Question2Answers question2Answers = new Question2Answers();
+                    question2Answers.setQuestion_id(question_id);
+                    question2Answers.setQuestion(question);
+
+                    List<LightAnswers> lightAnswers = lightAllAnswerDao.getCurrQuest2Answers(question_id);
+
+                    List<AnswerStatus> answerStatusList = new ArrayList<>();
+
+                    for (int j = 0; j < lightAnswers.size(); j++) {
+                        AnswerStatus answerStatus = new AnswerStatus();
+                        LightAnswers lightAnswers1 = lightAnswers.get(j);
+                        String str = lightAnswers1.getAnswer();
+                        answerStatus.setAnswer(str);
+                        answerStatus.setChoose_flag(lightAnswers1.getChoose());
+                        answerStatus.setId(lightAnswers1.getId());
+                        answerStatusList.add(answerStatus);
+                    }
+                    question2Answers.setAnswerStatusList(answerStatusList);
+                    answersList.add(question2Answers);
+
+                }
+                CThreadPoolExecutor.runOnMainThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        lightExamSelectAdapter.setDatas(answersList);
+                    }
+                });
+            }
+        });
+
+        lightDefaultViewModel.getAllDefaultQuestion2Answers().observe(this, new Observer<List<LightUseQuestions>>() {
+            @Override
+            public void onChanged(List<LightUseQuestions> lightUseQuestions) {
+                lightExamsBeans.clear();
+                lightExamsBeans.addAll(lightUseQuestions);
+                lightExamUseAdapter.setDatas(lightExamsBeans);
+            }
+        });
+
+
+        if (HomeFragment.class.getSimpleName().equals(getTopFragment().getClass().getSimpleName())) {
+            ((MainActivity) _mActivity).viewtitle.setVisibility(View.VISIBLE);
+            ((MainActivity) _mActivity).btn_return.setVisibility(View.VISIBLE);
+
+        } else {
+            ((MainActivity) _mActivity).viewtitle.setVisibility(View.GONE);
+            ((MainActivity) _mActivity).btn_return.setVisibility(View.GONE);
+        }
+        initToolbarNav(mToolbar);
+
+
+    }
+
+    protected void initToolbarNav(Toolbar toolbar) {
+        toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp);
+        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+
+                pop();
+            }
+        });
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        ((MainActivity) _mActivity).viewtitle.setVisibility(View.VISIBLE);
+        ((MainActivity) _mActivity).btn_return.setVisibility(View.VISIBLE);
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.fragment_light_exam_list, container, false);
+        initView(view);
+        return view;
+    }
+
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()){
+            case R.id.btn_light_cancle:
+                pop();
+                break;
+            case R.id.btn_light_default:
+                OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.from(LightUseInitWorker.class);
+                WorkManager.getInstance(_mActivity).enqueue(oneTimeWorkRequest);
+                break;
+            case R.id.btn_sure:
+                break;
+        }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        Log.i(TAG, "onResume");
+
+    }
+
+    @Override
+    public void onStop() {
+        super.onStop();
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java
index c3f15ea..11fab49 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SysExamSettingFragment.java
@@ -73,6 +73,13 @@
                         }
 
                         break;
+                        case 2:
+                        Toast.makeText(_mActivity, "鐏厜棰樼洰璁剧疆", Toast.LENGTH_SHORT).show();
+                        if (getParentFragment() instanceof  BaseSettingFragment){
+                            ((BaseSettingFragment)getParentFragment()).start( LightExamFragment.newInstance());
+                        }
+
+                        break;
                 }
          
             }
diff --git a/app/src/main/res/drawable/aliyun_svideo_icon_upload_success.png b/app/src/main/res/drawable/aliyun_svideo_icon_upload_success.png
new file mode 100644
index 0000000..fbfa69b
--- /dev/null
+++ b/app/src/main/res/drawable/aliyun_svideo_icon_upload_success.png
Binary files differ
diff --git a/app/src/main/res/drawable/divider.xml b/app/src/main/res/drawable/divider.xml
new file mode 100644
index 0000000..0e326ce
--- /dev/null
+++ b/app/src/main/res/drawable/divider.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#FF4081"/>
+    <size android:height="1dp"/>
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml
new file mode 100644
index 0000000..287004a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add.xml
@@ -0,0 +1,4 @@
+<vector android:height="60dp" android:viewportHeight="1024"
+    android:viewportWidth="1024" android:width="60dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#81C1ED" android:pathData="M512,65C265.1,65 65,265.1 65,512s200.1,447 447,447 447,-200.1 447,-447S758.9,65 512,65zM778.3,498c0,17.6 -14.4,32 -32,32L558,530v188.3c0,17.6 -14.4,32 -32,32s-32,-14.4 -32,-32L494,530L305.7,530c-17.6,0 -32,-14.4 -32,-32s14.4,-32 32,-32L494,466L494,277.7c0,-17.6 14.4,-32 32,-32s32,14.4 32,32L558,466h188.3c17.6,0 32,14.4 32,32z"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_add_disable.xml b/app/src/main/res/drawable/ic_add_disable.xml
new file mode 100644
index 0000000..a52e0a4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_disable.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="200dp"
+    android:height="200dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M512,65C265.1,65 65,265.1 65,512s200.1,447 447,447 447,-200.1 447,-447S758.9,65 512,65zM778.3,498c0,17.6 -14.4,32 -32,32L558,530v188.3c0,17.6 -14.4,32 -32,32s-32,-14.4 -32,-32L494,530L305.7,530c-17.6,0 -32,-14.4 -32,-32s14.4,-32 32,-32L494,466L494,277.7c0,-17.6 14.4,-32 32,-32s32,14.4 32,32L558,466h188.3c17.6,0 32,14.4 32,32z"
+      android:fillColor="#cdcdcd"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_add_selector.xml b/app/src/main/res/drawable/ic_add_selector.xml
new file mode 100644
index 0000000..c99d2c6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add_selector.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+<item android:state_enabled="true"  android:state_pressed="true" android:drawable="@drawable/ic_add"/>
+<item android:state_enabled="false"  android:state_pressed="false" android:drawable="@drawable/ic_add_disable"/>
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_select_no.xml b/app/src/main/res/drawable/ic_select_no.xml
new file mode 100644
index 0000000..d387ca3
--- /dev/null
+++ b/app/src/main/res/drawable/ic_select_no.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="60dp"
+    android:height="60dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M512,96C283.2,96 96,283.2 96,512s187.2,416 416,416 416,-187.2 416,-416S740.8,96 512,96zM512,844.8c-183.04,0 -332.8,-149.76 -332.8,-332.8S328.96,179.2 512,179.2 844.8,328.96 844.8,512 695.04,844.8 512,844.8z"
+      android:fillColor="#1296db"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_select_yes.xml b/app/src/main/res/drawable/ic_select_yes.xml
new file mode 100644
index 0000000..a46bae6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_select_yes.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="60dp"
+    android:height="60dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M512,152c96.2,0 186.6,37.4 254.6,105.4S872,415.8 872,512s-37.4,186.6 -105.4,254.6S608.2,872 512,872c-96.2,0 -186.6,-37.4 -254.6,-105.4S152,608.2 152,512s37.4,-186.6 105.4,-254.6S415.8,152 512,152m0,-56C282.2,96 96,282.2 96,512s186.2,416 416,416 416,-186.2 416,-416S741.8,96 512,96z"
+      android:fillColor="#1296db"/>
+  <path
+      android:pathData="M727,297C669.6,239.6 593.2,208 512,208c-81.2,0 -157.6,31.6 -215,89C239.6,354.4 208,430.8 208,512s31.6,157.6 89,215C354.4,784.4 430.8,816 512,816c81.2,0 157.6,-31.6 215,-89C784.4,669.6 816,593.2 816,512s-31.6,-157.6 -89,-215z"
+      android:fillColor="#1296db"/>
+</vector>
diff --git a/app/src/main/res/drawable/radiobutton_selector.xml b/app/src/main/res/drawable/radiobutton_selector.xml
new file mode 100644
index 0000000..b3587d0
--- /dev/null
+++ b/app/src/main/res/drawable/radiobutton_selector.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+<item android:state_checked="true" android:drawable="@drawable/ic_select_yes" android:state_enabled="true"/>
+<item android:state_checked="false" android:drawable="@drawable/ic_select_no" android:state_enabled="false"/>
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/umeng_socialize_delete.png b/app/src/main/res/drawable/umeng_socialize_delete.png
new file mode 100644
index 0000000..0abe441
--- /dev/null
+++ b/app/src/main/res/drawable/umeng_socialize_delete.png
Binary files differ
diff --git a/app/src/main/res/layout/fragment_light_exam_list.xml b/app/src/main/res/layout/fragment_light_exam_list.xml
new file mode 100644
index 0000000..d1c0f37
--- /dev/null
+++ b/app/src/main/res/layout/fragment_light_exam_list.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <include layout="@layout/toolbar"/>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@drawable/ic_bground"
+        android:orientation="horizontal"
+        >
+
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:paddingLeft="@dimen/ui_margin_10dp"
+            android:orientation="vertical"
+            >
+
+<TextView
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/ui_margin_50dp"
+    android:textColor="@android:color/white"
+    android:textSize="28sp"
+    android:text="鐩墠浣跨敤鐨勯鐩�"/>
+<androidx.recyclerview.widget.RecyclerView
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_weight="1"
+    android:id="@+id/recyclerview_useexams"/>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:gravity="center_vertical"
+                android:layout_height="@dimen/ui_margin_60dp"
+                android:orientation="horizontal">
+                <Button
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/ui_margin_50dp"
+                    android:text="鍙栨秷"
+                    android:id="@+id/btn_light_cancle"
+                    android:layout_weight="1"/>
+                <Button
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/ui_margin_50dp"
+                    android:text="鎭㈠榛樿"
+                    android:id="@+id/btn_light_default"
+                    android:layout_weight="1"/>
+                <Button
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/ui_margin_50dp"
+                    android:id="@+id/btn_light_sure"
+                    android:text="纭"
+                    android:layout_weight="1"/>
+            </LinearLayout>
+        </LinearLayout>       
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:paddingRight="@dimen/ui_margin_10dp"
+            android:paddingLeft="@dimen/ui_margin_10dp"
+            android:orientation="vertical"
+            >
+
+            <TextView
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/ui_margin_50dp"
+                android:textColor="@android:color/white"
+                android:textSize="28sp"
+                android:text="鍙互鏇存崲鐨勯鐩�"/>
+            <androidx.recyclerview.widget.RecyclerView
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:id="@+id/recyclerview_select"/>
+
+        </LinearLayout>
+
+</LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/light_exam_select_item.xml b/app/src/main/res/layout/light_exam_select_item.xml
new file mode 100644
index 0000000..efdbbdc
--- /dev/null
+++ b/app/src/main/res/layout/light_exam_select_item.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+
+    android:padding="@dimen/ui_margin_10dp">
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/ui_margin_50dp"
+        android:textSize="25sp"
+        android:layout_marginLeft="@dimen/ui_margin_60dp"
+        android:gravity="center_vertical"
+        android:textColor="@android:color/white"
+        android:drawablePadding="@dimen/ui_margin_10dp"
+        android:drawableLeft="@drawable/aliyun_svideo_icon_upload_success"
+        android:text="璇峰紑璧峰墠鐓х伅"
+        android:id="@+id/tv_question"/>
+
+    <RadioGroup
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_question"
+        android:layout_marginLeft="@dimen/ui_margin_60dp"
+        android:layout_marginTop="@dimen/ui_margin_10dp"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tv_answer1"
+                android:layout_width="wrap_content"
+                android:layout_height="@dimen/ui_margin_40dp"
+
+                android:layout_weight="1"
+                android:text="@string/answer"
+                android:textColor="@android:color/white"
+                android:textSize="20sp" />
+
+            <RadioButton
+                android:layout_width="@dimen/ui_margin_60dp"
+                android:layout_height="@dimen/ui_margin_60dp"
+                android:id="@+id/rb1_light"
+                android:background="@null"
+                android:button="@drawable/radiobutton_selector"
+                android:textSize="22sp" />
+        </LinearLayout>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:visibility="gone"
+            android:layout_marginTop="@dimen/ui_margin_10dp"
+            android:id="@+id/ll_light_container2"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tv_answer2"
+                android:layout_width="wrap_content"
+                android:layout_height="@dimen/ui_margin_40dp"
+
+                android:layout_weight="1"
+                android:text="@string/answer"
+                android:textColor="@android:color/white"
+                android:textSize="20sp" />
+
+            <RadioButton
+                android:layout_width="@dimen/ui_margin_60dp"
+                android:layout_height="@dimen/ui_margin_60dp"
+                android:id="@+id/rb2_light"
+                android:background="@null"
+                android:button="@drawable/radiobutton_selector"
+                android:textSize="22sp" />
+        </LinearLayout>
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/ui_margin_10dp"
+            android:visibility="gone"
+            android:id="@+id/ll_light_container3"
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tv_answer3"
+                android:layout_width="wrap_content"
+                android:layout_height="@dimen/ui_margin_40dp"
+
+                android:layout_weight="1"
+                android:text="@string/answer"
+                android:textColor="@android:color/white"
+                android:textSize="20sp" />
+
+            <RadioButton
+                android:layout_width="@dimen/ui_margin_60dp"
+                android:layout_height="@dimen/ui_margin_60dp"
+                android:id="@+id/rb3_light"
+                android:background="@null"
+                android:button="@drawable/radiobutton_selector"
+                android:textSize="22sp" />
+        </LinearLayout>
+
+    </RadioGroup>
+
+
+    <ImageView
+        android:layout_width="@dimen/ui_margin_50dp"
+        android:layout_height="@dimen/ui_margin_50dp"
+        android:src="@drawable/ic_add_selector"
+        android:layout_alignParentStart="true"
+        android:id="@+id/iv_delete_item"
+        android:layout_centerVertical="true"/>
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/light_exam_use_item.xml b/app/src/main/res/layout/light_exam_use_item.xml
new file mode 100644
index 0000000..b3819de
--- /dev/null
+++ b/app/src/main/res/layout/light_exam_use_item.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
+    android:layout_height="110dp"
+    android:padding="@dimen/ui_margin_10dp">
+<TextView
+    android:layout_width="wrap_content"
+    android:layout_height="@dimen/ui_margin_50dp"
+    android:textSize="25sp"
+    android:gravity="center_vertical"
+    android:textColor="@android:color/white"
+    android:drawablePadding="@dimen/ui_margin_10dp"
+    android:drawableLeft="@drawable/aliyun_svideo_icon_upload_success"
+    android:text="璇峰紑璧峰墠鐓х伅"
+    android:id="@+id/tv_question"/>
+    <TextView
+        android:layout_width="wrap_content"
+        android:textSize="20sp"
+        android:id="@+id/tv_answer"
+        android:layout_marginTop="@dimen/ui_margin_10dp"
+        android:layout_below="@+id/tv_question"
+        android:textColor="@android:color/white"
+        android:layout_height="@dimen/ui_margin_40dp"
+        android:text="@string/answer"/>
+
+    <ImageView
+        android:layout_width="@dimen/ui_margin_50dp"
+        android:layout_height="@dimen/ui_margin_50dp"
+        android:src="@drawable/umeng_socialize_delete"
+        android:layout_alignParentEnd="true"
+        android:id="@+id/iv_delete_item"
+        android:layout_centerVertical="true"/>
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ef41d1b..7ab4ec8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -74,9 +74,9 @@
     </string-array>
 
 <string-array name="array_large_item_menu">
-<!--    <item>鐏厜璁剧疆</item>-->
     <item>瑙勫垯璁剧疆</item>
   <item>钃濈墮鎵弿</item>
+    <item>鐏厜闅忔満棰樼洰</item>
     <!--    <item>鎸囦护璁剧疆</item>
       <item>绯荤粺璁剧疆</item>
       <item>鏁欏绯荤粺璁剧疆</item>
@@ -101,5 +101,6 @@
 
     <string name="auto_act_to_select">璇烽�夋嫨闇�瑕佽繛鎺ョ殑钃濈墮璁惧</string>
     <string name="auto_act_to_refresh">璇峰皾璇曚笅鎷夊埛鏂�,杩涜鎵弿鍛ㄥ洿钃濈墮璁惧</string>
+    <string name="answer">绛旀锛�%1$s</string>
 
 </resources>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 2c137f2..8321838 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -11,6 +11,8 @@
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
         <item name="colorAccent">@color/colorAccent</item>
+        <item name="android:listDivider">@drawable/divider</item>
+
     </style>
 
     <style name="AppTheme.NoActionBar.AppBarOverlay"

--
Gitblit v1.8.0