package com.hjx.parent.dialog; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.CompoundButton; import android.widget.RadioButton; import android.widget.RadioGroup; import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.google.gson.Gson; import com.hjx.parent.AddSuccessActivity; import com.hjx.parent.App; import com.hjx.parent.ImageActivity; import com.hjx.parent.R; import com.hjx.parent.bean.StudentBean; import com.hjx.parent.databinding.DialogAddErrorBinding; import com.prws.common.bean.Grade; import com.prws.common.bean.GradeAndSubject; import com.prws.common.bean.ResponseResult; import com.prws.common.bean.Subject; import com.prws.common.bean.TopicBean; import com.prws.common.net.NetWorks; import com.prws.common.utils.CommonUtil; import com.prws.common.utils.LogUtil; import com.prws.common.utils.SharedPreferencesUtil; import com.prws.common.utils.StringUtils; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import okhttp3.ResponseBody; public class ErrorInputDialog extends Dialog { private ImageActivity context; private DialogAddErrorBinding binding; private List list; private int select = 0; private Grade grade; private String term; private Subject subject; private int reason; private int type = 0; BaseQuickAdapter adapter; public ErrorInputDialog(@NonNull ImageActivity context, List list) { super(context, R.style.MyAlertDialog); this.context = context; this.list = list; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DialogAddErrorBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); Window dialogWindow = getWindow(); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.width = CommonUtil.getScreenWidth(getContext()); dialogWindow.setGravity(Gravity.BOTTOM); dialogWindow.setAttributes(lp); adapter = new BaseQuickAdapter(R.layout.item_topic, list) { @Override protected void convert(@NonNull BaseViewHolder item, Object o) { int position = item.getAdapterPosition(); item.setText(R.id.tv_name, context.getString(R.string.num_topic, StringUtils.intToChinese(position + 1))); if (list.get(position).isFinish()) { item.setGone(R.id.iv_click, true); item.setBackgroundRes(R.id.tv_name, R.drawable.topic_finish_bg); item.setTextColor(R.id.tv_name, Color.parseColor("#1C90F3")); } else if (select == position) { item.setGone(R.id.iv_click, false); item.setBackgroundRes(R.id.tv_name, R.drawable.button_select_topic_bg); item.setTextColor(R.id.tv_name, Color.parseColor("#1C90F3")); } else { item.setGone(R.id.iv_click, false); item.setBackgroundRes(R.id.tv_name, R.drawable.button_topic_bg); item.setTextColor(R.id.tv_name, Color.parseColor("#999999")); } item.getConvertView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { select = position; loadError(); notifyDataSetChanged(); } }); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { } }; binding.listItem.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)); binding.listItem.setAdapter(adapter); List grades = new ArrayList<>(); for (GradeAndSubject grade : App.getInstance().getGradeAndSubjects()) { grades.add(grade.getGrade().getGrade()); } ArrayAdapter gradeAdapter = new ArrayAdapter<>(context, R.layout.item_for_custom_spinner, grades); binding.spinnerGrade.setAdapter(gradeAdapter); binding.spinnerGrade.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { grade = App.getInstance().getGradeAndSubjects().get(position).getGrade(); refreshSubject(App.getInstance().getGradeAndSubjects().get(position).getSubjects()); } @Override public void onNothingSelected(AdapterView parent) { } }); ArrayAdapter gradeAdapter1 = new ArrayAdapter<>(context, R.layout.item_for_custom_spinner, getContext().getResources().getStringArray(R.array.grade_array)); binding.spinnerGrade1.setAdapter(gradeAdapter1); binding.spinnerGrade1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { term = getContext().getResources().getStringArray(R.array.grade_array)[position]; } @Override public void onNothingSelected(AdapterView parent) { } }); ArrayAdapter reasonAdapter = new ArrayAdapter<>(context, R.layout.item_for_custom_spinner, context.getResources().getStringArray(R.array.error_reason)); binding.spinnerReason.setAdapter(reasonAdapter); binding.spinnerReason.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { reason = position; } @Override public void onNothingSelected(AdapterView parent) { } }); RadioButton typeButton = (RadioButton) binding.typeRadio.getChildAt(type); typeButton.setChecked(true); binding.typeRadio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton rcheck = (RadioButton) findViewById(checkedId); type = getContext().getString(R.string.topic_type_in).equals(rcheck.getText().toString()) ? 0 : 1; list.get(select).setType(type); } }); binding.ivBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); binding.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { binding.addTopic.setText("全部加入错题本"); } else { binding.addTopic.setText("第" + StringUtils.intToChinese(select + 1) + "题加入错题本"); } } }); binding.addTopic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (binding.checkbox.isChecked()) { for (TopicBean topicBean : list) { addTopic(topicBean); } } else { addTopic(list.get(select)); } } }); loadError(); } private void refreshSubject(List subjects) { List s = new ArrayList<>(); for (Subject subject : subjects) { s.add(subject.getSubject()); } ArrayAdapter subjectAdapter = new ArrayAdapter<>(context, R.layout.item_for_custom_spinner, s); binding.spinnerSubject.setAdapter(subjectAdapter); binding.spinnerSubject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { subject = subjects.get(position); } @Override public void onNothingSelected(AdapterView parent) { } }); } private void loadError() { TopicBean bean = list.get(select); Glide.with(getContext()).load(bean.getPath()).override(CommonUtil.getScreenWidth(context) - CommonUtil.dpToPx(getContext(), 40), CommonUtil.dpToPx(getContext(), 90)).fitCenter().into(binding.ivTopic); if (!binding.checkbox.isChecked()) { binding.addTopic.setText("第" + StringUtils.intToChinese(select + 1) + "题加入错题本"); } } private void addTopic(TopicBean bean) { if (!bean.isFinish()) { bean.setId(String.valueOf(System.currentTimeMillis())); bean.setDate(String.valueOf(System.currentTimeMillis())); bean.setGrade(grade.getGrade()); bean.setType(type); bean.setSubject(subject.getSubject()); String student = (String) SharedPreferencesUtil.getData("student", ""); StudentBean studentBean = new Gson().fromJson(student, StudentBean.class); Map param = new HashMap<>(); param.put("bookId", bean.getId()); param.put("stuId", studentBean.getStuId()); param.put("errorReason", String.valueOf(reason)); param.put("title", grade.getGrade() + "-" + subject.getSubject() + "-" + (type == 0 ? "课内" : "课外") + "错题"); param.put("subject", bean.getSubject()); param.put("grade", bean.getGrade() + term); param.put("type", String.valueOf(bean.getType())); param.put("teacherFlag", "0"); param.put("controlFlag", "1"); NetWorks.addError(bean.getPath(), param, new Observer() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ResponseResult responseResult) { if (responseResult.getCode() == 200) { bean.setFinish(true); boolean isAllAdd = true; for (int i = 0; i < list.size(); i++) { if (!list.get(i).isFinish()) { select = i; adapter.notifyDataSetChanged(); isAllAdd = false; loadError(); break; } } if (isAllAdd) { dismiss(); Intent intent = new Intent(context, AddSuccessActivity.class); context.startActivity(intent); context.finish(); } } } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } } }