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 lightExamsBeans = new ArrayList<>(); private List answersList = new ArrayList<>(); private LightExamSelectAdapter lightExamSelectAdapter; private List 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 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 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>() { @Override public void onChanged(List lightAnswers) { lightAnswerList.clear(); lightAnswerList.addAll(lightAnswers); } }); CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { List 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 = lightAllAnswerDao.getCurrQuest2Answers(question_id); List 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>() { @Override public void onChanged(List 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(); } }