package com.hjx.parent.dialog; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.graphics.Color; 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.hjx.parent.databinding.DialogEditErrorBinding; 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.SharedPreferencesUtil; import com.prws.common.utils.StringUtils; 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; public class ErrorEditDialog extends Dialog { private Context context; private DialogEditErrorBinding binding; private List list; private Grade grade; private String term; private Subject subject; private int reason; private int type = 0; private int done = 1; private EditInterface editInterface; public interface EditInterface { void edit(String name, String grade, String subject, int type, int reason, int manager); } public ErrorEditDialog(@NonNull Context context, List list, EditInterface editInterface) { super(context, R.style.MyAlertDialog); this.context = context; this.list = list; this.editInterface = editInterface; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DialogEditErrorBinding.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); TopicBean bean = list.get(0); List grades = new ArrayList<>(); int selectGrade = 0; for (GradeAndSubject grade : App.getInstance().getGradeAndSubjects()) { grades.add(grade.getGrade().getGrade()); if (bean.getGrade().contains(grade.getGrade().getGrade())) { selectGrade = App.getInstance().getGradeAndSubjects().indexOf(grade); } } ArrayAdapter gradeAdapter = new ArrayAdapter<>(context, R.layout.item_for_custom_spinner, grades); binding.spinnerGrade.setAdapter(gradeAdapter); binding.spinnerGrade.setSelection(selectGrade); 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.setSelection(bean.getGrade().contains("下学期") ? 1 : 0); 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.setSelection(bean.getReason()); 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(bean.getType()); 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; } }); RadioButton manager = (RadioButton) binding.managerRadio.getChildAt(bean.getIsDone()); manager.setChecked(true); binding.managerRadio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton rcheck = (RadioButton) findViewById(checkedId); done = getContext().getString(R.string.text_done).equals(rcheck.getText().toString()) ? 0 : 1; } }); binding.ivBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); binding.addTopic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editError(); } }); } private void editError() { List> hashMapArrayList = new ArrayList<>(); for (TopicBean topicBean : list) { HashMap map = new HashMap<>(); map.put("bookId", topicBean.getId()); map.put("grade", grade.getGrade() + term); map.put("subject", subject.getSubject()); map.put("errorReason", String.valueOf(reason)); map.put("title", grade.getGrade() + "-" + subject.getSubject() + "-" + (type == 0 ? "课内" : "课外") + "错题"); map.put("type", type); map.put("controlFlag", done); hashMapArrayList.add(map); } NetWorks.editError(hashMapArrayList, new Observer() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ResponseResult responseResult) { if (responseResult.getCode() == 200) { editInterface.edit(grade.getGrade() + "-" + subject.getSubject() + "-" + (type == 0 ? "课内" : "课外") + "错题", grade.getGrade() + term, subject.getSubject(), type, reason, done); dismiss(); } } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } private void refreshSubject(List subjects) { int selectSubject = 0; List s = new ArrayList<>(); for (Subject subject : subjects) { s.add(subject.getSubject()); if (list.get(0).getSubject().equals(subject.getSubject())) { selectSubject = subjects.indexOf(subject); } } ArrayAdapter subjectAdapter = new ArrayAdapter<>(context, R.layout.item_for_custom_spinner, s); binding.spinnerSubject.setAdapter(subjectAdapter); binding.spinnerSubject.setSelection(selectSubject); 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) { } }); } }