package com.example.activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Chronometer; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; import com.example.Config; import com.example.JsonParse; import com.example.LoveDao; import com.example.R; import com.example.bean.JsonQuestBean; import com.example.bean.QuestBean; import com.example.fragment.AnswerFragment; import com.google.gson.Gson; import java.io.IOException; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.OnClick; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class AnswerActivity extends BaseActivity implements Chronometer.OnChronometerTickListener, View.OnClickListener { private Chronometer chronometer; private ViewPager vp_answer; private ArrayList fragmentlists; private int minute = 0; private int second = 0; private AlertDialog.Builder builder; private ArrayList a; private Button btn_previous; private Button btn_submit; private Button btn_next; private int nowpager = 0; private List messages; private String type; @Override int getLayoutId() { return R.layout.activity_answer; } @Override void initView() { chronometer = (Chronometer) findViewById(R.id._chro_exam); vp_answer = (ViewPager) findViewById(R.id.vp_answer); btn_previous = (Button) findViewById(R.id._btn_previous); btn_submit = (Button) findViewById(R.id._btn_submit); btn_next = (Button) findViewById(R.id._btn_next); // 获取传递来的变量 // 联网获取数据 initNet(); btn_previous.setOnClickListener(this); btn_submit.setOnClickListener(this); btn_next.setOnClickListener(this); vp_answer.setOnPageChangeListener(new MyOnPageChangeListener()); setChronometer(); } /** * 设置计时器 */ private void setChronometer() { chronometer.setText(nowtime()); chronometer.start(); chronometer.setOnChronometerTickListener(this); } /** * 计时器规则 * * @param chronometer */ @Override public void onChronometerTick(Chronometer chronometer) { second++; if (second == 59) { minute++; second = 00; } } /** * 现在时间 * * @return */ private String nowtime() { if (second < 10) { return (minute + ":0" + second); } else { return (minute + ":" + second); } } /* * 初始化网络连接 * * @param type */ private void initNet() { a = new ArrayList<>(); fragmentlists = new ArrayList<>(); //进度条对话框 final ProgressDialog progressDialog = new ProgressDialog(AnswerActivity.this, R.style.AppTheme_Dark_Dialog); progressDialog.setIndeterminate(true); progressDialog.setMessage("获取题目中..."); progressDialog.show(); // 联网 RequestBody requestBody = new FormBody.Builder() .build(); // OkHttpClient okHttp=new OkHttpClient(); // Request request=new Request // .Builder() // .url(Config.URL_GET_QUESTION) // .build(); // Call call=okHttp.newCall(request); // okhttp3.Callback callback = new okhttp3.Callback(){ @Override public void onFailure(Call call, IOException e) { String responseData = "Error!"; Log.e("LoginActivity","Failure"); Log.e("LoginActivity",responseData); } @Override public void onResponse(Call call, Response response) throws IOException { String str=response.body().string(); Message msg=new Message(); msg.what=0; msg.obj=str; mhandler.sendMessage(msg); } }; progressDialog.dismiss(); /*OkGo.get(Config.URL_GET_QUESTION) .params("type", type) .execute(new StringCallback() { @Override public void onSuccess(String s, Call call, Response response) { //gson解析 Gson gson = new Gson(); JsonQuestBean jsonQuestBean = gson.fromJson(s, JsonQuestBean.class); messages = jsonQuestBean.getMessages(); for (int i = 0; i < messages.size(); i++) { QuestBean questBeanQ = messages.get(i); questBeanQ.setId(i); fragmentlists.add(new AnswerFragment(questBeanQ)); LoveDao.insertLove(questBeanQ); a.add(questBeanQ.getId() + ""); LogUtils.e(i + " onSuccess : " + questBeanQ.getId() + questBeanQ.getTitle()); } // 设置适配器 vp_answer.setAdapter(new MainAdapter(getSupportFragmentManager())); progressDialog.dismiss(); } @Override public void onError(Call call, Response response, Exception e) { } });*/ OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(Config.URL_GET_QUESTION) .post(requestBody) .build(); //发送请求 client.newCall(request).enqueue(callback); } Handler mhandler=new Handler(){ @Override public void dispatchMessage(@NonNull Message msg) { super.dispatchMessage(msg); switch (msg.what){ case 0: if (msg.obj!=null){ String vlResult = (String) msg.obj; Log.e("ShopActivity", vlResult); ////解析获取的JSON数据 Gson gson=new Gson(); // // List quests = new ArrayList(); // for(int i = 0;i<10;i++){ // QuestBean q = new QuestBean(); // q.setId(Long.valueOf("id")); // q.setQ_type("q_type"); // q.setTitle("title"); // q.setOptionA("optionA"); // q.setOptionB("optionB"); // q.setOptionC("optionC"); // q.setOptionD("optionD"); // quests.add(q); // } // JsonQuestBean infoBean=gson.fromJson(vlResult,JsonQuestBean.class);//json文件解析错误 messages = infoBean.getMessages(); for (int i = 0; i < messages.size(); i++) { QuestBean questBeanQ = messages.get(i); questBeanQ.setId((long) i); fragmentlists.add(new AnswerFragment(questBeanQ)); LoveDao.insertLove(questBeanQ); a.add(questBeanQ.getId() + ""); } // 设置适配器 vp_answer.setAdapter(new MainAdapter(getSupportFragmentManager())); } break; } } }; // @Override // void processClick(View v) { // switch (v.getId()) { //// 点击上一题按钮 // case R.id._btn_previous: //// 如果是第一题,则谈吐司提醒,否则上移一道题 // if (nowpager == 0) { // Toast.makeText(AnswerActivity.this, "已经到头啦!", Toast.LENGTH_SHORT).show(); // } else { // vp_answer.setCurrentItem(--nowpager); // } // break; //// 点击提交按钮 // case R.id._btn_submit: //// 简答题不进行提交评分 // if (type.equals("3")) { // Toast.makeText(this, "简答题目前暂不支持评分", Toast.LENGTH_SHORT).show(); // return; // } //// 否则初始化并展示提交对话框 // initAlertDialog(); // builder.show(); // break; //// 点击下一题按钮 // case R.id._btn_next: //// 如果是最后一题,则谈吐司提醒,否则下移一道题 // if (nowpager == fragmentlists.size()) { // Toast.makeText(AnswerActivity.this, "已经是最后一题了!", Toast.LENGTH_SHORT).show(); // } else { // vp_answer.setCurrentItem(++nowpager); // } // break; // default: // break; // } // } @Override public void onClick(View view) { switch (view.getId()) { // 点击上一题按钮 case R.id._btn_previous: // 如果是第一题,则谈吐司提醒,否则上移一道题 if (nowpager == 0) { Toast.makeText(AnswerActivity.this, "已经到头啦!", Toast.LENGTH_SHORT).show(); } else { vp_answer.setCurrentItem(--nowpager); } break; // 点击提交按钮 case R.id._btn_submit: // 简答题不进行提交评分 if (type.equals("3")) { Toast.makeText(this, "简答题目前暂不支持评分", Toast.LENGTH_SHORT).show(); return; } // 否则初始化并展示提交对话框 initAlertDialog(); builder.show(); break; // 点击下一题按钮 case R.id._btn_next: // 如果是最后一题,则谈吐司提醒,否则下移一道题 if (nowpager == fragmentlists.size()) { Toast.makeText(AnswerActivity.this, "已经是最后一题了!", Toast.LENGTH_SHORT).show(); } else { vp_answer.setCurrentItem(++nowpager); } break; default: break; } } /** * viewpager适配器 */ class MainAdapter extends FragmentPagerAdapter { public MainAdapter(FragmentManager fm) { super(fm); } //获取条目 @Override public Fragment getItem(int position) { return fragmentlists.get(position); } //数目 @Override public int getCount() { return fragmentlists.size(); } } // 弹出是否确认交卷的对话框 private void initAlertDialog() { //新建对话框 builder = new AlertDialog.Builder(AnswerActivity.this); builder.setTitle("提示"); builder.setMessage("是否确定交卷?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 计算分数 int grade = 0; // 判断题 // if (type.equals("2")) { // for (int i = 0; i < messages.size(); i++) { //// 查询 // QuestBean questBeenA = LoveDao.queryLove(Integer.toString(Integer.parseInt(a.get(i)))); //// 判断 // if (questBeenA.getAnswer().equals("对") && questBeenA.getMyanswer().equals("A") || questBeenA.getAnswer().equals("错") && questBeenA.getMyanswer().equals("B")) { // grade += 20; // } // } // } //// 选择题 // else { for (int i = 0; i < messages.size(); i++) { QuestBean questBeenA = LoveDao.queryLove(Integer.toString(Integer.parseInt(a.get(i)))); if (questBeenA.getAnswer().equals(questBeenA.getMyanswer())) { grade += 20; } } //} // 传递分数 Intent intent = new Intent(AnswerActivity.this, GradeActivity.class); intent.putExtra("grade", "" + grade); // 传递题目列表 intent.putStringArrayListExtra("timu", a); startActivity(intent); finish(); } }); builder.setNegativeButton("取消", null); } private void parseJsonDate(String obj) { } /** * viewpager监听事件 */ private class MyOnPageChangeListener implements ViewPager.OnPageChangeListener { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { nowpager = position; } @Override public void onPageScrollStateChanged(int state) { } } }