From 34994574e77d20de8baf349c6c2c5f9790c93174 Mon Sep 17 00:00:00 2001 From: pybple5kv <1766872402@qq.com> Date: Sun, 10 Jul 2022 22:20:40 +0800 Subject: [PATCH] ADD file via upload --- AnswerActivity.java | 402 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 402 insertions(+) create mode 100644 AnswerActivity.java diff --git a/AnswerActivity.java b/AnswerActivity.java new file mode 100644 index 0000000..4fea415 --- /dev/null +++ b/AnswerActivity.java @@ -0,0 +1,402 @@ +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) { + + } + } +} \ No newline at end of file