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.app;
|
import safeluck.drive.evaluation.bean.AnswerStatus;
|
import safeluck.drive.evaluation.bean.Question2Answers;
|
import safeluck.drive.evaluation.customview.MyDecoration;
|
|
import safeluck.drive.evaluation.util.CThreadPoolExecutor;
|
import safeluck.drive.evaluation.util.DataInitKt;
|
|
/**
|
* 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, "选中的position=" + 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_light_sure:
|
CThreadPoolExecutor.runInBackground(()->{
|
DataInitKt.sendExamLightsAndExamStatus(app.getAppContext());
|
});
|
break;
|
}
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
Log.i(TAG, "onResume");
|
|
}
|
|
@Override
|
public void onStop() {
|
super.onStop();
|
}
|
}
|