You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

402 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<Fragment> fragmentlists;
private int minute = 0;
private int second = 0;
private AlertDialog.Builder builder;
private ArrayList<String> a;
private Button btn_previous;
private Button btn_submit;
private Button btn_next;
private int nowpager = 0;
private List<QuestBean> 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<QuestBean> quests = new ArrayList<QuestBean>();
// 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) {
}
}
}