Commit 0979a476 by xuqinghao

修复问卷做过有答案不显示的问题

parent 17cde0fc
package com.offcn.teachinteraction.questionnaire.mvp.ui.activity; package com.offcn.teachinteraction.questionnaire.mvp.ui.activity;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.annotation.Route;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.gyf.immersionbar.ImmersionBar; import com.gyf.immersionbar.ImmersionBar;
import com.gyf.immersionbar.OnKeyboardListener; import com.gyf.immersionbar.OnKeyboardListener;
import com.offcn.kxframework.base.BaseActivity; import com.offcn.kxframework.base.BaseActivity;
import com.offcn.kxframework.di.component.KxAppComponent; import com.offcn.kxframework.di.component.KxAppComponent;
import com.offcn.kxframework.utils.OffcnUtils; import com.offcn.kxframework.utils.OffcnUtils;
import com.offcn.offcn_commonsdk.core.RouterHub; import com.offcn.offcn_commonsdk.core.RouterHub;
import com.offcn.offcn_commonsdk.event.StuRefreshHwListEvent; import com.offcn.offcn_commonsdk.event.StuRefreshHwListEvent;
import com.offcn.offcn_commonsdk.utils.ButtonClickCtrlUtil; import com.offcn.offcn_commonsdk.utils.ButtonClickCtrlUtil;
import com.offcn.offcn_commonsdk.utils.OffcnDataUtil; import com.offcn.offcn_commonsdk.utils.OffcnDataUtil;
import com.offcn.offcn_commonsdk.utils.OffcnDeviceUtil; import com.offcn.offcn_commonsdk.utils.OffcnDeviceUtil;
import com.offcn.teachinteraction.R; import com.offcn.teachinteraction.R;
import com.offcn.teachinteraction.databinding.InterActivityStuQuestionnaireMainBinding; import com.offcn.teachinteraction.databinding.InterActivityStuQuestionnaireMainBinding;
import com.offcn.teachinteraction.mvp.view.StuServiceDialog; import com.offcn.teachinteraction.mvp.view.StuServiceDialog;
import com.offcn.teachinteraction.questionnaire.adapter.StuQuestionnaireMainAdapter; import com.offcn.teachinteraction.questionnaire.adapter.StuQuestionnaireMainAdapter;
import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireBaseInfoBean; import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireBaseInfoBean;
import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireQuestionAnswerBean; import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireQuestionAnswerBean;
import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireQuestionBean; import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireQuestionBean;
import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireQuestionType; import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireQuestionType;
import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireStatus; import com.offcn.teachinteraction.questionnaire.bean.questionnaire.QuestionnaireStatus;
import com.offcn.teachinteraction.questionnaire.di.component.DaggerStuQuestionnaireMainComponent; import com.offcn.teachinteraction.questionnaire.di.component.DaggerStuQuestionnaireMainComponent;
import com.offcn.teachinteraction.questionnaire.mvp.contract.StuQuestionnaireMainContract; import com.offcn.teachinteraction.questionnaire.mvp.contract.StuQuestionnaireMainContract;
import com.offcn.teachinteraction.questionnaire.mvp.presenter.StuQuestionnaireMainPresenter; import com.offcn.teachinteraction.questionnaire.mvp.presenter.StuQuestionnaireMainPresenter;
import com.offcn.teachinteraction.questionnaire.mvp.ui.fragment.questionnaire.StuQuestionnaireEachFragment; import com.offcn.teachinteraction.questionnaire.mvp.ui.fragment.questionnaire.StuQuestionnaireEachFragment;
import com.offcn.teachinteraction.questionnaire.widget.StuQuestionnaireSubmitSuccessDialog; import com.offcn.teachinteraction.questionnaire.widget.StuQuestionnaireSubmitSuccessDialog;
import com.offcn_commonres.wigdet.ExamMaterialViewPager; import com.offcn_commonres.wigdet.ExamMaterialViewPager;
import com.offcn_commonres.wigdet.OffcnLoadingDialog; import com.offcn_commonres.wigdet.OffcnLoadingDialog;
import com.offcn_commonres.wigdet.ToastUtils; import com.offcn_commonres.wigdet.ToastUtils;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.ObservableEmitter; import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe; import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer; import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import static com.offcn.kxframework.utils.Preconditions.checkNotNull; import static com.offcn.kxframework.utils.Preconditions.checkNotNull;
/** /**
* 问卷操作主页面 * 问卷操作主页面
*/ */
@Route(path = RouterHub.INTER_STUQUESTIONNAIRMAINACTIVITY) @Route(path = RouterHub.INTER_STUQUESTIONNAIRMAINACTIVITY)
public class StuQuestionnaireMainActivity extends BaseActivity<StuQuestionnaireMainPresenter, InterActivityStuQuestionnaireMainBinding> implements StuQuestionnaireMainContract.View { public class StuQuestionnaireMainActivity extends BaseActivity<StuQuestionnaireMainPresenter, InterActivityStuQuestionnaireMainBinding> implements StuQuestionnaireMainContract.View {
private String source_id; // 问卷id (必传,不能为空) private String source_id; // 问卷id (必传,不能为空)
private int paperStatus; // 问卷状态 (必传,不能<=0) private int paperStatus; // 问卷状态 (必传,不能<=0)
private String curriculum_id; // 互动课程id (如果是第一次作答或者重新作答必传,不能为空) private String curriculum_id; // 互动课程id (如果是第一次作答或者重新作答必传,不能为空)
private String knobble_id; // 小节id(如果是第一次作答或者重新作答必传,不能为空) private String knobble_id; // 小节id(如果是第一次作答或者重新作答必传,不能为空)
private String class_id; // 班级id 非公开课必传 (如果是第一次作答或者重新作答必传,不能为空) private String class_id; // 班级id 非公开课必传 (如果是第一次作答或者重新作答必传,不能为空)
private String answer_id; // 作答id(如果是第一次作答或者重新作答那么无需传递,查看作答记录必传) private String answer_id; // 作答id(如果是第一次作答或者重新作答那么无需传递,查看作答记录必传)
private int que_type; private int que_type;
private String extend_param; //班级评价及未来其它类型扩展字段 private String extend_param; //班级评价及未来其它类型扩展字段
private String que_title; //外部标题 private String que_title; //外部标题
private final int ANSWER_PARSE_COMPLETE = 10001; // 答案解析完毕的消息对象 private final int ANSWER_PARSE_COMPLETE = 10001; // 答案解析完毕的消息对象
private final int QUESTION_PARSE_COMPLETE = 10002; // 题目解析完毕的消息对象 private final int QUESTION_PARSE_COMPLETE = 10002; // 题目解析完毕的消息对象
private ImageView ivBack; // 回退按钮 private ImageView ivBack; // 回退按钮
private TextView tvTitle; // 主标题 private TextView tvTitle; // 主标题
private ExamMaterialViewPager vpMain; // 主内容展示器 private ExamMaterialViewPager vpMain; // 主内容展示器
private View vBottomLine; // 底部栏顶部边线(默认隐藏) private View vBottomLine; // 底部栏顶部边线(默认隐藏)
private LinearLayout llMainBottomBar; // 底部栏(默认隐藏) private LinearLayout llMainBottomBar; // 底部栏(默认隐藏)
private TextView tvPreviousQuestion; // 上一题按钮 private TextView tvPreviousQuestion; // 上一题按钮
private TextView tvNextQuestion; // 下一题按钮 private TextView tvNextQuestion; // 下一题按钮
private int nextEnableRes; // 下一题按钮可用的是否的背景 private int nextEnableRes; // 下一题按钮可用的是否的背景
private int nextDisableRes; // 下一题按钮不可用的是否的背景 private int nextDisableRes; // 下一题按钮不可用的是否的背景
private boolean nextBtnStatus; // 下一题按钮的状态 private boolean nextBtnStatus; // 下一题按钮的状态
private Activity context; // 上下文对象 private Activity context; // 上下文对象
private OffcnLoadingDialog loadingDialog; // 加载中的对话框 private OffcnLoadingDialog loadingDialog; // 加载中的对话框
private ButtonClickCtrlUtil btnCtrlUtil; // 防暴力点击工具 private ButtonClickCtrlUtil btnCtrlUtil; // 防暴力点击工具
private QuestionnaireBaseInfoBean baseInfoBean; // 试卷基本信息 private QuestionnaireBaseInfoBean baseInfoBean; // 试卷基本信息
private QuestionnaireStatus questionnaireStatus; // 问卷的状态(填写中/查看记录) private QuestionnaireStatus questionnaireStatus; // 问卷的状态(填写中/查看记录)
private ArrayMap<Integer, QuestionnaireQuestionAnswerBean> idAnswerMap; // 试题编号和试题答案之间的关联表 private ArrayMap<Integer, QuestionnaireQuestionAnswerBean> idAnswerMap; // 试题编号和试题答案之间的关联表
private ArrayList<QuestionnaireQuestionBean> questionList; // 题目列表 private ArrayList<QuestionnaireQuestionBean> questionList; // 题目列表
private StuQuestionnaireMainAdapter mainAdapter; // 主列表适配器 private StuQuestionnaireMainAdapter mainAdapter; // 主列表适配器
private HashMap<String, String> pictureCache = new HashMap<>(); // 用于缓存图片展示的存储 private HashMap<String, String> pictureCache = new HashMap<>(); // 用于缓存图片展示的存储
private boolean hasQuestionParseComplete; // 题目解析是否完成 private boolean hasQuestionParseComplete; // 题目解析是否完成
private boolean hasAnswerParseComplete; // 答案解析是否完成 private boolean hasAnswerParseComplete; // 答案解析是否完成
private StuQuestionnaireEachFragment curShowFragment; // 当前正在展示的子页面 private StuQuestionnaireEachFragment curShowFragment; // 当前正在展示的子页面
private StuQuestionnaireSubmitSuccessDialog submitSuccessDialog; // 提交数据成功的对话框 private StuQuestionnaireSubmitSuccessDialog submitSuccessDialog; // 提交数据成功的对话框
private StuServiceDialog backSpaceDialog; // 回退对话框 private StuServiceDialog backSpaceDialog; // 回退对话框
private Handler handler = new Handler(Looper.getMainLooper()) { // 特殊操作处理 private Handler handler = new Handler(Looper.getMainLooper()) { // 特殊操作处理
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
super.handleMessage(msg); super.handleMessage(msg);
// 如果本页面已经销毁,那么什么事都不做了 // 如果本页面已经销毁,那么什么事都不做了
if (context == null || context.isDestroyed()) { if (context == null || context.isDestroyed()) {
return; return;
} }
switch (msg.what) { switch (msg.what) {
// 答案解析完毕的消息对象 // 答案解析完毕的消息对象
case ANSWER_PARSE_COMPLETE: case ANSWER_PARSE_COMPLETE:
hasAnswerParseComplete = true; hasAnswerParseComplete = true;
// 如果当前题目解析已经完成的话,那么开始展示数据 // 如果当前题目解析已经完成的话,那么开始展示数据
if (hasQuestionParseComplete) { if (hasQuestionParseComplete) {
initQuestionPageAdapter(); initQuestionPageAdapter();
} }
break; break;
// 题目解析完毕的消息对象 // 题目解析完毕的消息对象
case QUESTION_PARSE_COMPLETE: case QUESTION_PARSE_COMPLETE:
hasQuestionParseComplete = true; hasQuestionParseComplete = true;
Boolean hasAnswerResult = (Boolean) msg.obj; Boolean hasAnswerResult = (Boolean) msg.obj;
// 如果当前存在答案解析并且已经完成答案解析的话,那么开始展示数据 // 如果当前存在答案解析并且已经完成答案解析的话,那么开始展示数据
if (hasAnswerResult) { if (hasAnswerResult) {
if (hasAnswerParseComplete) { if (hasAnswerParseComplete) {
initQuestionPageAdapter(); initQuestionPageAdapter();
} }
} }
// 不存在答案解析,那么直接展示数据 // 不存在答案解析,那么直接展示数据
else { else {
initQuestionPageAdapter(); initQuestionPageAdapter();
} }
break; break;
} }
} }
}; };
@Override @Override
public void setupActivityComponent(@NonNull KxAppComponent appComponent) { public void setupActivityComponent(@NonNull KxAppComponent appComponent) {
DaggerStuQuestionnaireMainComponent //如找不到该类,请编译一下项目 DaggerStuQuestionnaireMainComponent //如找不到该类,请编译一下项目
.builder() .builder()
.appComponent(appComponent) .appComponent(appComponent)
.view(this) .view(this)
.build() .build()
.inject(this); .inject(this);
} }
@Override @Override
public InterActivityStuQuestionnaireMainBinding initView(@Nullable Bundle savedInstanceState) { public InterActivityStuQuestionnaireMainBinding initView(@Nullable Bundle savedInstanceState) {
return InterActivityStuQuestionnaireMainBinding.inflate(getLayoutInflater()); return InterActivityStuQuestionnaireMainBinding.inflate(getLayoutInflater());
} }
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
context = StuQuestionnaireMainActivity.this; context = StuQuestionnaireMainActivity.this;
// 校验传入参数 // 校验传入参数
if (!checkBaseData()) { if (!checkBaseData()) {
finish(); finish();
return; return;
} }
// 生成工具bean // 生成工具bean
btnCtrlUtil = new ButtonClickCtrlUtil(); btnCtrlUtil = new ButtonClickCtrlUtil();
loadingDialog = new OffcnLoadingDialog(context, ""); loadingDialog = new OffcnLoadingDialog(context, "");
// 绑定视图 // 绑定视图
bindViews(); bindViews();
// 调整头顶状态栏的文字颜色 // 调整头顶状态栏的文字颜色
ImmersionBar.with(context).statusBarDarkFont(true).keyboardEnable(true) ImmersionBar.with(context).statusBarDarkFont(true).keyboardEnable(true)
.keyboardEnable(true) //解决软键盘与底部输入框冲突问题,默认为false,还有一个重载方法,可以指定软键盘mode .keyboardEnable(true) //解决软键盘与底部输入框冲突问题,默认为false,还有一个重载方法,可以指定软键盘mode
.keyboardMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) //单独指定软键盘模式 .keyboardMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) //单独指定软键盘模式
.setOnKeyboardListener(new OnKeyboardListener() { .setOnKeyboardListener(new OnKeyboardListener() {
@Override @Override
public void onKeyboardChange(boolean isPopup, int keyboardHeight) { public void onKeyboardChange(boolean isPopup, int keyboardHeight) {
if (questionnaireStatus == QuestionnaireStatus.Filling) { if (questionnaireStatus == QuestionnaireStatus.Filling) {
if (isPopup) { if (isPopup) {
// 底部栏的隐藏需要立即执行 // 底部栏的隐藏需要立即执行
llMainBottomBar.setVisibility(View.GONE); llMainBottomBar.setVisibility(View.GONE);
vBottomLine.setVisibility(View.GONE); vBottomLine.setVisibility(View.GONE);
} else { } else {
// 延迟显示底部栏,防止闪动 // 延迟显示底部栏,防止闪动
llMainBottomBar.postDelayed(new Runnable() { llMainBottomBar.postDelayed(new Runnable() {
@Override @Override
public void run() { public void run() {
vBottomLine.setVisibility(View.VISIBLE); vBottomLine.setVisibility(View.VISIBLE);
llMainBottomBar.setVisibility(View.VISIBLE); llMainBottomBar.setVisibility(View.VISIBLE);
llMainBottomBar.removeCallbacks(this); llMainBottomBar.removeCallbacks(this);
} }
}, 16); }, 16);
} }
} }
} }
}).init(); }).init();
// 获取到当前问卷的状态 // 获取到当前问卷的状态
questionnaireStatus = QuestionnaireStatus.getByValue(paperStatus); questionnaireStatus = QuestionnaireStatus.getByValue(paperStatus);
// 如果当前是查看记录状态,那么所有页面可以随意滑动,否则需要根据子页面状态调节滑动操作 // 如果当前是查看记录状态,那么所有页面可以随意滑动,否则需要根据子页面状态调节滑动操作
vpMain.setCanScroll(QuestionnaireStatus.Completed == questionnaireStatus); vpMain.setCanScroll(QuestionnaireStatus.Completed == questionnaireStatus);
// 获取到资源 // 获取到资源
nextEnableRes = R.drawable.inter_selector_168bff_4dp_to_1583f0_4dp; nextEnableRes = R.drawable.inter_selector_168bff_4dp_to_1583f0_4dp;
nextDisableRes = R.drawable.inter_shape_e4e4e4_4dp; nextDisableRes = R.drawable.inter_shape_e4e4e4_4dp;
// 获取网络问卷基本数据并显示 // 获取网络问卷基本数据并显示
mPresenter.getStuQuestionnaireBaseInfo(source_id, class_id); mPresenter.getStuQuestionnaireBaseInfo(source_id, class_id);
} }
// 校验传入参数 // 校验传入参数
private boolean checkBaseData() { private boolean checkBaseData() {
source_id = getIntent().getStringExtra("source_id"); source_id = getIntent().getStringExtra("source_id");
curriculum_id = getIntent().getStringExtra("curriculum_id"); curriculum_id = getIntent().getStringExtra("curriculum_id");
knobble_id = getIntent().getStringExtra("knobble_id"); knobble_id = getIntent().getStringExtra("knobble_id");
class_id = getIntent().getStringExtra("class_id"); class_id = getIntent().getStringExtra("class_id");
answer_id = getIntent().getStringExtra("answer_id"); answer_id = getIntent().getStringExtra("answer_id");
paperStatus = getIntent().getIntExtra("paperStatus",1); paperStatus = getIntent().getIntExtra("paperStatus",1);
que_type = getIntent().getIntExtra("que_type",0);//班级评价为1,普通问卷为0 que_type = getIntent().getIntExtra("que_type",0);//班级评价为1,普通问卷为0
extend_param = getIntent().getStringExtra("extend_param");//班级评价及未来其它类型扩展字段 extend_param = getIntent().getStringExtra("extend_param");//班级评价及未来其它类型扩展字段
que_title= getIntent().getStringExtra("que_title");//外部标题 que_title= getIntent().getStringExtra("que_title");//外部标题
if (isEmpty()) { if (isEmpty()) {
ToastUtils.showToast(context, context.getString(R.string.inter_str_parameter_passing_error)); ToastUtils.showToast(context, context.getString(R.string.inter_str_parameter_passing_error));
return false; return false;
} }
return true; return true;
} }
public boolean isEmpty() { public boolean isEmpty() {
// 试卷编号不能为空,试卷状态必须正确 // 试卷编号不能为空,试卷状态必须正确
boolean firstCondition = OffcnDataUtil.isEmpty(source_id) || paperStatus < QuestionnaireStatus.Filling.getValue() || paperStatus > QuestionnaireStatus.Completed.getValue(); boolean firstCondition = OffcnDataUtil.isEmpty(source_id) || paperStatus < QuestionnaireStatus.Filling.getValue() || paperStatus > QuestionnaireStatus.Completed.getValue();
// 如果当前是查看记录状态,那么作答记录编号不能为空 // 如果当前是查看记录状态,那么作答记录编号不能为空
boolean secondCondition = false; boolean secondCondition = false;
switch (QuestionnaireStatus.getByValue(paperStatus)) { switch (QuestionnaireStatus.getByValue(paperStatus)) {
case Filling: case Filling:
secondCondition =((que_type==0)?(OffcnDataUtil.isEmpty(curriculum_id) || OffcnDataUtil.isEmpty(knobble_id)):OffcnDataUtil.isEmpty(extend_param))|| OffcnDataUtil.isEmpty(class_id); secondCondition =((que_type==0)?(OffcnDataUtil.isEmpty(curriculum_id) || OffcnDataUtil.isEmpty(knobble_id)):OffcnDataUtil.isEmpty(extend_param))|| OffcnDataUtil.isEmpty(class_id);
break; break;
case Completed: case Completed:
secondCondition = OffcnDataUtil.isEmpty(answer_id); secondCondition = OffcnDataUtil.isEmpty(answer_id);
break; break;
} }
return firstCondition || secondCondition; return firstCondition || secondCondition;
} }
// 绑定视图 // 绑定视图
private void bindViews() { private void bindViews() {
if (mBinding != null) { if (mBinding != null) {
ivBack = mBinding.ivBack; ivBack = mBinding.ivBack;
tvTitle = mBinding.tvTitle; tvTitle = mBinding.tvTitle;
vpMain = mBinding.vpMain; vpMain = mBinding.vpMain;
vBottomLine = mBinding.vBottomLine; vBottomLine = mBinding.vBottomLine;
llMainBottomBar = mBinding.llMainBottomBar; llMainBottomBar = mBinding.llMainBottomBar;
tvPreviousQuestion = mBinding.tvPreviousQuestion; tvPreviousQuestion = mBinding.tvPreviousQuestion;
tvNextQuestion = mBinding.tvNextQuestion; tvNextQuestion = mBinding.tvNextQuestion;
// 添加点击监听器 // 添加点击监听器
View.OnClickListener onClickListener = new View.OnClickListener() { View.OnClickListener onClickListener = new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (btnCtrlUtil.isFastDoubleClick()) return; if (btnCtrlUtil.isFastDoubleClick()) return;
int id = view.getId(); int id = view.getId();
// 回退 // 回退
if (id == R.id.ivBack) { if (id == R.id.ivBack) {
// 根据不同的状态执行不同的操作 // 根据不同的状态执行不同的操作
switch (questionnaireStatus) { switch (questionnaireStatus) {
// 填写中 // 填写中
case Filling: case Filling:
showBackSpaceDialog(); showBackSpaceDialog();
break; break;
// 查看记录 // 查看记录
case Completed: case Completed:
finish(); finish();
break; break;
} }
} }
// 上一题按钮 // 上一题按钮
else if (id == R.id.tvPreviousQuestion) { else if (id == R.id.tvPreviousQuestion) {
if (vpMain.getCurrentItem() != 0) { if (vpMain.getCurrentItem() != 0) {
if (curShowFragment != null) { if (curShowFragment != null) {
putAnswerResult(curShowFragment.getResult()); putAnswerResult(curShowFragment.getResult());
} }
vpMain.setCurrentItem(vpMain.getCurrentItem() - 1, true); vpMain.setCurrentItem(vpMain.getCurrentItem() - 1, true);
} }
} }
// 下一题按钮 // 下一题按钮
else if (id == R.id.tvNextQuestion) { else if (id == R.id.tvNextQuestion) {
// 如果当前不能点击下一题,给出提示信息 // 如果当前不能点击下一题,给出提示信息
if (!nextBtnStatus) { if (!nextBtnStatus) {
if (curShowFragment != null) { if (curShowFragment != null) {
ToastUtils.showToast(context, curShowFragment.getNextDisableReason()); ToastUtils.showToast(context, curShowFragment.getNextDisableReason());
} }
} }
// 否则执行跳转到下一题 // 否则执行跳转到下一题
else if (vpMain.getCurrentItem() != questionList.size() - 1) { else if (vpMain.getCurrentItem() != questionList.size() - 1) {
if (curShowFragment != null) { if (curShowFragment != null) {
putAnswerResult(curShowFragment.getResult()); putAnswerResult(curShowFragment.getResult());
} }
vpMain.setCurrentItem(vpMain.getCurrentItem() + 1, true); vpMain.setCurrentItem(vpMain.getCurrentItem() + 1, true);
} }
// 否则执行数据提交操作 // 否则执行数据提交操作
else { else {
// 异步生成作答结果并提交 // 异步生成作答结果并提交
requestSubmitAnswerResult(); requestSubmitAnswerResult();
} }
} }
} }
}; };
mBinding.ivBack.setOnClickListener(onClickListener); mBinding.ivBack.setOnClickListener(onClickListener);
mBinding.tvPreviousQuestion.setOnClickListener(onClickListener); mBinding.tvPreviousQuestion.setOnClickListener(onClickListener);
mBinding.tvNextQuestion.setOnClickListener(onClickListener); mBinding.tvNextQuestion.setOnClickListener(onClickListener);
} }
} }
// 更新标题数据内容,然后请求问卷题目数据 // 更新标题数据内容,然后请求问卷题目数据
@Override @Override
public void initBaseInfoResponseData(QuestionnaireBaseInfoBean infoBean) { public void initBaseInfoResponseData(QuestionnaireBaseInfoBean infoBean) {
if (infoBean == null) { if (infoBean == null) {
ToastUtils.showToast(context, "问卷信息获取失败"); ToastUtils.showToast(context, "问卷信息获取失败");
return; return;
} }
baseInfoBean = infoBean; baseInfoBean = infoBean;
// 执行界面数据操作 // 执行界面数据操作
if(que_type==1){// if(que_type==1){//
tvTitle.setText(OffcnDataUtil.isEmpty(que_title)?baseInfoBean.getTitle():que_title); tvTitle.setText(OffcnDataUtil.isEmpty(que_title)?baseInfoBean.getTitle():que_title);
}else { }else {
tvTitle.setText(baseInfoBean.getTitle()); tvTitle.setText(baseInfoBean.getTitle());
} }
// 继续请求问卷题目数据 // 继续请求问卷题目数据
mPresenter.getStuQuestionnaireContentList(source_id, answer_id); mPresenter.getStuQuestionnaireContentList(source_id, answer_id);
} }
// 启动分线程执行题目数据转换操作 // 启动分线程执行题目数据转换操作
@Override @Override
public void initQuestionSourceList(List<QuestionnaireQuestionBean> questSourceList, boolean hasAnswerResult) { public void initQuestionSourceList(List<QuestionnaireQuestionBean> questSourceList, boolean hasAnswerResult) {
// showLoading("数据解析中...", false); // showLoading("数据解析中...", false);
Observable.create(new ObservableOnSubscribe<QuestionnaireQuestionBean>() { Observable.create(new ObservableOnSubscribe<QuestionnaireQuestionBean>() {
@Override @Override
public void subscribe(ObservableEmitter<QuestionnaireQuestionBean> emitter) throws Exception { public void subscribe(ObservableEmitter<QuestionnaireQuestionBean> emitter) throws Exception {
if (questionList == null) { if (questionList == null) {
questionList = new ArrayList<>(questSourceList.size()); questionList = new ArrayList<>(questSourceList.size());
} else { } else {
questionList.clear(); questionList.clear();
} }
// 如果当前不存在作答结果,那么创建新的作答结果 // 如果当前不存在作答结果,那么创建新的作答结果
if (!hasAnswerResult) { if (!hasAnswerResult) {
idAnswerMap = new ArrayMap<>(questSourceList.size()); idAnswerMap = new ArrayMap<>(questSourceList.size());
} }
// 段落缓存列表 // 段落缓存列表
ArrayList<QuestionnaireQuestionBean> materialList = null; ArrayList<QuestionnaireQuestionBean> materialList = null;
QuestionnaireQuestionBean questionBean = null; QuestionnaireQuestionBean questionBean = null;
// 执行数据转换操作,将段落说明提取出来组合成题目 // 执行数据转换操作,将段落说明提取出来组合成题目
for (int index = 0; index < questSourceList.size(); index++) { for (int index = 0; index < questSourceList.size(); index++) {
questionBean = questSourceList.get(index); questionBean = questSourceList.get(index);
// 如果当前这个是段落说明 // 如果当前这个是段落说明
if ((questionBean.getQuestion_type() == QuestionnaireQuestionType.ParagraphDescription) && questionBean.getTitle() != null && !questionBean.getTitle().isEmpty()) { if ((questionBean.getQuestion_type() == QuestionnaireQuestionType.ParagraphDescription) && questionBean.getTitle() != null && !questionBean.getTitle().isEmpty()) {
if (materialList == null) { if (materialList == null) {
materialList = new ArrayList<>(1); materialList = new ArrayList<>(1);
} }
materialList.add(questionBean); materialList.add(questionBean);
} }
// 否则将段落说明添加到题目中 // 否则将段落说明添加到题目中
else { else {
if (materialList != null) { if (materialList != null) {
questionBean.setMaterialList(materialList); questionBean.setMaterialList(materialList);
materialList = null; materialList = null;
} }
questionList.add(questionBean); questionList.add(questionBean);
// 如果当前不存在作答结果,那么添加一个作答结果 // 如果当前不存在作答结果,那么添加一个作答结果
if (!hasAnswerResult) { if (!hasAnswerResult) {
QuestionnaireQuestionAnswerBean answerBean = null; QuestionnaireQuestionAnswerBean answerBean = null;
switch (questionBean.getQuestion_type()) { switch (questionBean.getQuestion_type()) {
// 单选题 // 单选题
case QuestionnaireQuestionType.SingleSelect: case QuestionnaireQuestionType.SingleSelect:
// 多选题 // 多选题
case QuestionnaireQuestionType.MultipleSelect: case QuestionnaireQuestionType.MultipleSelect:
//评分题 //评分题
case QuestionnaireQuestionType.ScoreType: case QuestionnaireQuestionType.ScoreType:
answerBean = new QuestionnaireQuestionAnswerBean<List<QuestionnaireQuestionAnswerBean.SelectAnswerBean>>(); answerBean = new QuestionnaireQuestionAnswerBean<List<QuestionnaireQuestionAnswerBean.SelectAnswerBean>>();
answerBean.setContent(new ArrayList<QuestionnaireQuestionAnswerBean.SelectAnswerBean>(0)); answerBean.setContent(new ArrayList<QuestionnaireQuestionAnswerBean.SelectAnswerBean>(0));
break; break;
// 开放型 // 开放型
case QuestionnaireQuestionType.OpenTopic: case QuestionnaireQuestionType.OpenTopic:
answerBean = new QuestionnaireQuestionAnswerBean<QuestionnaireQuestionAnswerBean.OpenTopicAnswerBean>(); answerBean = new QuestionnaireQuestionAnswerBean<QuestionnaireQuestionAnswerBean.OpenTopicAnswerBean>();
answerBean.setContent(new QuestionnaireQuestionAnswerBean.OpenTopicAnswerBean()); answerBean.setContent(new QuestionnaireQuestionAnswerBean.OpenTopicAnswerBean());
break; break;
// 数值型 // 数值型
case QuestionnaireQuestionType.NumericalType: case QuestionnaireQuestionType.NumericalType:
// 日期型 // 日期型
case QuestionnaireQuestionType.DateType: case QuestionnaireQuestionType.DateType:
answerBean = new QuestionnaireQuestionAnswerBean<String>(); answerBean = new QuestionnaireQuestionAnswerBean<String>();
answerBean.setContent(questionBean.getDefault_val()); answerBean.setContent(questionBean.getDefault_val());
break; break;
// 级联下拉 // 级联下拉
case QuestionnaireQuestionType.CascadePullDown: case QuestionnaireQuestionType.CascadePullDown:
answerBean = new QuestionnaireQuestionAnswerBean<List<QuestionnaireQuestionAnswerBean.CascadePullDownAnswerBean>>(); answerBean = new QuestionnaireQuestionAnswerBean<List<QuestionnaireQuestionAnswerBean.CascadePullDownAnswerBean>>();
answerBean.setContent(new ArrayList<QuestionnaireQuestionAnswerBean.CascadePullDownAnswerBean>(0)); answerBean.setContent(new ArrayList<QuestionnaireQuestionAnswerBean.CascadePullDownAnswerBean>(0));
break; break;
default: default:
answerBean =null; answerBean =null;
break; break;
} }
if(answerBean!=null) { if(answerBean!=null) {
// 设置好编号和类型 // 设置好编号和类型
answerBean.setQuestion_id(questionBean.getId()); answerBean.setQuestion_id(questionBean.getId());
answerBean.setQuestion_type(questionBean.getQuestion_type()); answerBean.setQuestion_type(questionBean.getQuestion_type());
// 执行添加操作 // 执行添加操作
idAnswerMap.put(questionBean.getId(), answerBean); idAnswerMap.put(questionBean.getId(), answerBean);
} }
} }
} }
} }
// 如果段落说明不为空,那么新建立一个题目执行操作 // 如果段落说明不为空,那么新建立一个题目执行操作
if (materialList != null) { if (materialList != null) {
questionBean = new QuestionnaireQuestionBean(); questionBean = new QuestionnaireQuestionBean();
questionBean.setQuestion_type(QuestionnaireQuestionType.ParagraphDescription); questionBean.setQuestion_type(QuestionnaireQuestionType.ParagraphDescription);
questionBean.setMaterialList(materialList); questionBean.setMaterialList(materialList);
questionList.add(questionBean); questionList.add(questionBean);
} }
// emitter.onNext(null); // emitter.onNext(null);
emitter.onComplete(); emitter.onComplete();
} }
}) })
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<QuestionnaireQuestionBean>() { .subscribe(new Observer<QuestionnaireQuestionBean>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
} }
@Override @Override
public void onComplete() { public void onComplete() {
hidLoading(); hidLoading();
Message msg = Message.obtain(); Message msg = Message.obtain();
msg.what = QUESTION_PARSE_COMPLETE; msg.what = QUESTION_PARSE_COMPLETE;
msg.obj = hasAnswerResult; msg.obj = hasAnswerResult;
handler.sendMessage(msg); handler.sendMessage(msg);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
} }
@Override @Override
public void onNext(QuestionnaireQuestionBean questionBean) { public void onNext(QuestionnaireQuestionBean questionBean) {
} }
}); });
} }
// 启动分线程执行答案数据解析操作 // 启动分线程执行答案数据解析操作
@Override @Override
public void initQuestionAnswerMap(JSONArray jsonAnswerArray) { public void initQuestionAnswerMap(JSONArray jsonAnswerArray) {
showLoading("数据解析中...", false); showLoading("数据解析中...", false);
Observable.create(new ObservableOnSubscribe<QuestionnaireQuestionAnswerBean>() { Observable.create(new ObservableOnSubscribe<QuestionnaireQuestionAnswerBean>() {
@Override @Override
public void subscribe(ObservableEmitter<QuestionnaireQuestionAnswerBean> emitter) throws Exception { public void subscribe(ObservableEmitter<QuestionnaireQuestionAnswerBean> emitter) throws Exception {
// 单选题、多选题类型 // 单选题、多选题类型
Type selectType = new TypeToken<QuestionnaireQuestionAnswerBean<List<QuestionnaireQuestionAnswerBean.SelectAnswerBean>>>() { Type selectType = new TypeToken<QuestionnaireQuestionAnswerBean<List<QuestionnaireQuestionAnswerBean.SelectAnswerBean>>>() {
}.getType(); }.getType();
// 开放型 // 开放型
Type openTopicType = new TypeToken<QuestionnaireQuestionAnswerBean<QuestionnaireQuestionAnswerBean.OpenTopicAnswerBean>>() { Type openTopicType = new TypeToken<QuestionnaireQuestionAnswerBean<QuestionnaireQuestionAnswerBean.OpenTopicAnswerBean>>() {
}.getType(); }.getType();
// 数值型、日期型 // 数值型、日期型
Type valueType = new TypeToken<QuestionnaireQuestionAnswerBean<String>>() { Type valueType = new TypeToken<QuestionnaireQuestionAnswerBean<String>>() {
}.getType(); }.getType();
// 级联下拉格式 // 级联下拉格式
Type cascadePullDownType = new TypeToken<QuestionnaireQuestionAnswerBean<List<QuestionnaireQuestionAnswerBean.CascadePullDownAnswerBean>>>() { Type cascadePullDownType = new TypeToken<QuestionnaireQuestionAnswerBean<List<QuestionnaireQuestionAnswerBean.CascadePullDownAnswerBean>>>() {
}.getType(); }.getType();
Gson gson = new Gson(); Gson gson = new Gson();
JSONObject jsonObject = null; JSONObject jsonObject = null;
QuestionnaireQuestionAnswerBean answerBean = null; QuestionnaireQuestionAnswerBean answerBean = null;
int count = jsonAnswerArray.length(); int count = jsonAnswerArray.length();
if (idAnswerMap == null) { if (idAnswerMap == null) {
idAnswerMap = new ArrayMap<>(count); idAnswerMap = new ArrayMap<>(count);
} }
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
jsonObject = jsonAnswerArray.optJSONObject(i); jsonObject = jsonAnswerArray.optJSONObject(i);
int questionType = jsonObject.optInt("question_type"); int questionType = jsonObject.optInt("question_type");
Type resultType = null; Type resultType = null;
switch (questionType) { switch (questionType) {
// 单选题 // 单选题
case QuestionnaireQuestionType.SingleSelect: case QuestionnaireQuestionType.SingleSelect:
// 多选题 // 多选题
case QuestionnaireQuestionType.MultipleSelect: case QuestionnaireQuestionType.MultipleSelect:
//评分题 //评分题
case QuestionnaireQuestionType.ScoreType: case QuestionnaireQuestionType.ScoreType:
resultType = selectType; resultType = selectType;
break; break;
// 开放型 // 开放型
case QuestionnaireQuestionType.OpenTopic: case QuestionnaireQuestionType.OpenTopic:
resultType = openTopicType; resultType = openTopicType;
break; break;
// 数值型 // 数值型
case QuestionnaireQuestionType.NumericalType: case QuestionnaireQuestionType.NumericalType:
// 日期型 // 日期型
case QuestionnaireQuestionType.DateType: case QuestionnaireQuestionType.DateType:
resultType = valueType; resultType = valueType;
break; break;
// 级联下拉 // 级联下拉
case QuestionnaireQuestionType.CascadePullDown: case QuestionnaireQuestionType.CascadePullDown:
resultType = cascadePullDownType; resultType = cascadePullDownType;
break; break;
default: default:
break; break;
} }
if (resultType != null) { if (resultType != null) {
answerBean = gson.fromJson(jsonObject.toString(), resultType); answerBean = gson.fromJson(jsonObject.toString(), resultType);
idAnswerMap.put(answerBean.getQuestion_id(), answerBean); idAnswerMap.put(answerBean.getQuestion_id(), answerBean);
} }
} }
emitter.onComplete(); emitter.onComplete();
} }
}) })
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<QuestionnaireQuestionAnswerBean>() { .subscribe(new Observer<QuestionnaireQuestionAnswerBean>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
} }
@Override @Override
public void onComplete() { public void onComplete() {
hidLoading(); hidLoading();
Message msg = Message.obtain(); Message msg = Message.obtain();
msg.what = ANSWER_PARSE_COMPLETE; msg.what = ANSWER_PARSE_COMPLETE;
handler.sendMessage(msg); handler.sendMessage(msg);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
} }
@Override @Override
public void onNext(QuestionnaireQuestionAnswerBean answerBean) { public void onNext(QuestionnaireQuestionAnswerBean answerBean) {
} }
}); });
} }
// 答题数据提交完毕之后的回调 // 答题数据提交完毕之后的回调
@Override @Override
public void submitStuQuestionnaireFinish(String answerId) { public void submitStuQuestionnaireFinish(String answerId) {
// 可以借助AnswerId再次执行操作 // 可以借助AnswerId再次执行操作
if (!OffcnDataUtil.isEmpty(answerId)) { if (!OffcnDataUtil.isEmpty(answerId)) {
if(que_type==1){ //班级反馈 if(que_type==1){ //班级反馈
setResult(RESULT_OK); setResult(RESULT_OK);
finish(); finish();
}else { //问卷提交 }else { //问卷提交
showSubmitSuccessDialog(baseInfoBean.getPrompt()); showSubmitSuccessDialog(baseInfoBean.getPrompt());
} }
} }
} }
// 获取一个上下文对象 // 获取一个上下文对象
@Override @Override
public Context getContext() { public Context getContext() {
return context; return context;
} }
// 异步生成作答结果并提交 // 异步生成作答结果并提交
private void requestSubmitAnswerResult() { private void requestSubmitAnswerResult() {
Collection<QuestionnaireQuestionAnswerBean> resultCollection = idAnswerMap.values(); Collection<QuestionnaireQuestionAnswerBean> resultCollection = idAnswerMap.values();
Gson gson = new Gson(); Gson gson = new Gson();
String answerResult = gson.toJson(resultCollection); String answerResult = gson.toJson(resultCollection);
mPresenter.submitStuQuestionnaireContent(class_id, OffcnDataUtil.isEmpty(curriculum_id)?"0":curriculum_id, OffcnDataUtil.isEmpty(knobble_id)?"0":knobble_id, source_id, answerResult,extend_param,que_type); mPresenter.submitStuQuestionnaireContent(class_id, OffcnDataUtil.isEmpty(curriculum_id)?"0":curriculum_id, OffcnDataUtil.isEmpty(knobble_id)?"0":knobble_id, source_id, answerResult,extend_param,que_type);
} }
// 准备适配器,开始展示数据 // 准备适配器,开始展示数据
private void initQuestionPageAdapter() { private void initQuestionPageAdapter() {
// 修改底部栏的状态 // 修改底部栏的状态
llMainBottomBar.setVisibility(QuestionnaireStatus.Filling == questionnaireStatus ? View.VISIBLE : View.GONE); llMainBottomBar.setVisibility(QuestionnaireStatus.Filling == questionnaireStatus ? View.VISIBLE : View.GONE);
vBottomLine.setVisibility(QuestionnaireStatus.Filling == questionnaireStatus ? View.VISIBLE : View.GONE); vBottomLine.setVisibility(QuestionnaireStatus.Filling == questionnaireStatus ? View.VISIBLE : View.GONE);
// 准备设置适配器(先获取到最后一条数据是否是段落说明) // 准备设置适配器(先获取到最后一条数据是否是段落说明)
boolean isLastMaterial = false; boolean isLastMaterial = false;
if (questionList.size() > 0) { if (questionList.size() > 0) {
QuestionnaireQuestionBean lastQuestion = questionList.get(questionList.size() - 1); QuestionnaireQuestionBean lastQuestion = questionList.get(questionList.size() - 1);
isLastMaterial = QuestionnaireQuestionType.ParagraphDescription == lastQuestion.getQuestion_type(); isLastMaterial = QuestionnaireQuestionType.ParagraphDescription == lastQuestion.getQuestion_type();
} }
mainAdapter = new StuQuestionnaireMainAdapter(getSupportFragmentManager(), questionList, isLastMaterial); mainAdapter = new StuQuestionnaireMainAdapter(getSupportFragmentManager(), questionList, isLastMaterial);
vpMain.setAdapter(mainAdapter); vpMain.setAdapter(mainAdapter);
vpMain.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { vpMain.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
} }
@Override @Override
public void onPageSelected(int position) { public void onPageSelected(int position) {
StuQuestionnaireMainActivity.this.onPageSelected(position); StuQuestionnaireMainActivity.this.onPageSelected(position);
} }
@Override @Override
public void onPageScrollStateChanged(int state) { public void onPageScrollStateChanged(int state) {
} }
}); });
// 默认选择第一个界面 // 默认选择第一个界面
onPageSelected(0); onPageSelected(0);
} }
// 选择某个子界面时执行回调的方法 // 选择某个子界面时执行回调的方法
private void onPageSelected(int position) { private void onPageSelected(int position) {
// 执行操作,告知当前Fragment是可见的,告知上一个可见的Fragment是不可见的了,如此便能够调动主界面执行操作了 // 执行操作,告知当前Fragment是可见的,告知上一个可见的Fragment是不可见的了,如此便能够调动主界面执行操作了
StuQuestionnaireEachFragment fragment = mainAdapter.getFragment(position); StuQuestionnaireEachFragment fragment = mainAdapter.getFragment(position);
if (curShowFragment != null && curShowFragment != fragment) { if (curShowFragment != null && curShowFragment != fragment) {
curShowFragment.setShowStatus(false); curShowFragment.setShowStatus(false);
} }
curShowFragment = fragment; curShowFragment = fragment;
curShowFragment.setShowStatus(true); curShowFragment.setShowStatus(true);
// 如果当前是最后一道题,修改文案 // 如果当前是最后一道题,修改文案
if (position == questionList.size() - 1) { if (position == questionList.size() - 1) {
tvNextQuestion.setText("提交"); tvNextQuestion.setText("提交");
} else { } else {
tvNextQuestion.setText("下一题"); tvNextQuestion.setText("下一题");
} }
// 如果只有一道题的话,那么上一题直接不可见 // 如果只有一道题的话,那么上一题直接不可见
tvPreviousQuestion.setVisibility(position == 0 ? View.INVISIBLE : View.VISIBLE); tvPreviousQuestion.setVisibility(position == 0 ? View.INVISIBLE : View.VISIBLE);
} }
// 展示提交数据成功的对话框 // 展示提交数据成功的对话框
private void showSubmitSuccessDialog(String strTip) { private void showSubmitSuccessDialog(String strTip) {
if (submitSuccessDialog == null) { if (submitSuccessDialog == null) {
submitSuccessDialog = new StuQuestionnaireSubmitSuccessDialog(context); submitSuccessDialog = new StuQuestionnaireSubmitSuccessDialog(context);
submitSuccessDialog.setOnFinishListener(new StuQuestionnaireSubmitSuccessDialog.OnFinishListener() { submitSuccessDialog.setOnFinishListener(new StuQuestionnaireSubmitSuccessDialog.OnFinishListener() {
@Override @Override
public void OnFinish() { public void OnFinish() {
// 发送消息通知列表已经完成了问卷的作答 // 发送消息通知列表已经完成了问卷的作答
EventBus.getDefault().post(new StuRefreshHwListEvent()); EventBus.getDefault().post(new StuRefreshHwListEvent());
finish(); finish();
} }
}); });
} }
submitSuccessDialog.showDialog(strTip); submitSuccessDialog.showDialog(strTip);
} }
// 展示回退提示对话框 // 展示回退提示对话框
private void showBackSpaceDialog() { private void showBackSpaceDialog() {
if (backSpaceDialog == null) { if (backSpaceDialog == null) {
backSpaceDialog = new StuServiceDialog(); backSpaceDialog = new StuServiceDialog();
} }
// 显示对话框 // 显示对话框
backSpaceDialog.showServiceDialog(context, "确定要退出吗?", "退出后不保存当前作答记录", "取消", "确定", new StuServiceDialog.OnClickListener() { backSpaceDialog.showServiceDialog(context, "确定要退出吗?", "退出后不保存当前作答记录", "取消", "确定", new StuServiceDialog.OnClickListener() {
@Override @Override
public void selected(boolean isSelected) { public void selected(boolean isSelected) {
if (isSelected) { if (isSelected) {
finish(); finish();
} }
} }
}); });
} }
@Override @Override
public void onBackPressed() { public void onBackPressed() {
// super.onBackPressed(); // super.onBackPressed();
ivBack.callOnClick(); ivBack.callOnClick();
} }
/** /**
* 添加一个图片的缓存 * 添加一个图片的缓存
* *
* @param key * @param key
* @param url * @param url
*/ */
@Override @Override
public void putPicture(String key, String url) { public void putPicture(String key, String url) {
pictureCache.put(key, url); pictureCache.put(key, url);
} }
/** /**
* 获取一个图片的缓存 * 获取一个图片的缓存
* *
* @param key * @param key
*/ */
@Override @Override
public String getPicture(String key) { public String getPicture(String key) {
if (pictureCache != null) return pictureCache.get(key); if (pictureCache != null) return pictureCache.get(key);
return ""; return "";
} }
/** /**
* 清除一个图片的缓存 * 清除一个图片的缓存
* *
* @param key * @param key
*/ */
@Override @Override
public void removePicture(String key) { public void removePicture(String key) {
if (pictureCache != null) pictureCache.remove(key); if (pictureCache != null) pictureCache.remove(key);
} }
/** /**
* 提交作答数据到结果中 * 提交作答数据到结果中
* *
* @param answerBean * @param answerBean
*/ */
@Override @Override
public void putAnswerResult(QuestionnaireQuestionAnswerBean answerBean) { public void putAnswerResult(QuestionnaireQuestionAnswerBean answerBean) {
if (answerBean != null) { if (answerBean != null) {
idAnswerMap.put(answerBean.getQuestion_id(), answerBean); idAnswerMap.put(answerBean.getQuestion_id(), answerBean);
} }
} }
/** /**
* 从主界面中请求获取到作答结果 * 从主界面中请求获取到作答结果
* *
* @param questionId * @param questionId
* @return * @return
*/ */
@Override @Override
public QuestionnaireQuestionAnswerBean getAnswerResult(int questionId) { public QuestionnaireQuestionAnswerBean getAnswerResult(int questionId) {
try { try {
idAnswerMap = new ArrayMap<>(questionList.size()); if(idAnswerMap==null){
return idAnswerMap.get(questionId); idAnswerMap = new ArrayMap<>(questionList.size());
}catch (NullPointerException e){ }else{
return idAnswerMap.get(questionId);
} }
return null; } catch (NullPointerException e) {
}
}
/** return null;
* 设置问卷主页面底部的下一题属性 }
*
* @param nextEnable 下一题是否可以启用 /**
*/ * 设置问卷主页面底部的下一题属性
@Override *
public void setNextBtnStatus(boolean nextEnable) { * @param nextEnable 下一题是否可以启用
if (questionnaireStatus == QuestionnaireStatus.Filling) { */
this.nextBtnStatus = nextEnable; @Override
tvNextQuestion.setBackgroundResource(nextBtnStatus ? nextEnableRes : nextDisableRes); public void setNextBtnStatus(boolean nextEnable) {
} if (questionnaireStatus == QuestionnaireStatus.Filling) {
} this.nextBtnStatus = nextEnable;
tvNextQuestion.setBackgroundResource(nextBtnStatus ? nextEnableRes : nextDisableRes);
/** }
* 获取到问卷状态 }
*
* @return /**
*/ * 获取到问卷状态
@Override *
public QuestionnaireStatus getQuestionnaireStatus() { * @return
return questionnaireStatus; */
} @Override
public QuestionnaireStatus getQuestionnaireStatus() {
/** return questionnaireStatus;
* 展示软键盘 }
* @param view
*/ /**
@Override * 展示软键盘
public void showSoftKeyboard(View view) { * @param view
// 底部栏的隐藏需要立即执行 */
llMainBottomBar.setVisibility(View.GONE); @Override
vBottomLine.setVisibility(View.GONE); public void showSoftKeyboard(View view) {
// 延迟隐藏底部栏,防止闪动 // 底部栏的隐藏需要立即执行
llMainBottomBar.postDelayed(new Runnable() { llMainBottomBar.setVisibility(View.GONE);
@Override vBottomLine.setVisibility(View.GONE);
public void run() { // 延迟隐藏底部栏,防止闪动
OffcnDeviceUtil.showSoftKeyboard(view); llMainBottomBar.postDelayed(new Runnable() {
llMainBottomBar.removeCallbacks(this); @Override
} public void run() {
}, 16); OffcnDeviceUtil.showSoftKeyboard(view);
} llMainBottomBar.removeCallbacks(this);
}
/** }, 16);
* 隐藏软键盘 }
*/
@Override /**
public void hideSoftKeyboard() { * 隐藏软键盘
// 延迟隐藏底部栏,防止闪动 */
OffcnDeviceUtil.hideSoftKeyboard(context); @Override
} public void hideSoftKeyboard() {
// 延迟隐藏底部栏,防止闪动
/** OffcnDeviceUtil.hideSoftKeyboard(context);
* 主要是添加图片的ActivityResult事件 }
*
* @param requestCode /**
* @param resultCode * 主要是添加图片的ActivityResult事件
* @param data *
*/ * @param requestCode
@Override * @param resultCode
public void onActivityResult(int requestCode, int resultCode, Intent data) { * @param data
super.onActivityResult(requestCode, resultCode, data); */
// 执行数据的判定操作,部分数据需要Activity配合发布 @Override
if (resultCode == Activity.RESULT_OK) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (curShowFragment != null) { super.onActivityResult(requestCode, resultCode, data);
curShowFragment.onActivityResult(requestCode, resultCode, data); // 执行数据的判定操作,部分数据需要Activity配合发布
} if (resultCode == Activity.RESULT_OK) {
} if (curShowFragment != null) {
} curShowFragment.onActivityResult(requestCode, resultCode, data);
}
@Override }
public void showLoading(String msg, boolean cancel) { }
loadingDialog.showDialog(msg, cancel);
} @Override
public void showLoading(String msg, boolean cancel) {
@Override loadingDialog.showDialog(msg, cancel);
public void hidLoading() { }
loadingDialog.dismissDialog();
} @Override
public void hidLoading() {
@Override loadingDialog.dismissDialog();
public void showLoading() { }
loadingDialog.showDialog("玩命加载中", false);
} @Override
public void showLoading() {
@Override loadingDialog.showDialog("玩命加载中", false);
public void hideLoading() { }
loadingDialog.dismissDialog();
} @Override
public void hideLoading() {
@Override loadingDialog.dismissDialog();
public void showMessage(@NonNull String message) { }
checkNotNull(message);
OffcnUtils.snackbarText(message); @Override
} public void showMessage(@NonNull String message) {
checkNotNull(message);
@Override OffcnUtils.snackbarText(message);
public void launchActivity(@NonNull Intent intent) { }
checkNotNull(intent);
OffcnUtils.startActivity(intent); @Override
} public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
@Override OffcnUtils.startActivity(intent);
public void killMyself() { }
finish();
} @Override
public void killMyself() {
@Override finish();
public void onDestroy() { }
// 关闭加载中的对话框
if (loadingDialog != null) { @Override
loadingDialog.dismissDialog(); public void onDestroy() {
loadingDialog = null; // 关闭加载中的对话框
} if (loadingDialog != null) {
super.onDestroy(); loadingDialog.dismissDialog();
} loadingDialog = null;
} }
super.onDestroy();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment