ErrorEditDialog.java 9.21 KB
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<TopicBean> 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<TopicBean> 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<String> 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<String> 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<String> 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<String> 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<HashMap<String, Object>> hashMapArrayList = new ArrayList<>();
        for (TopicBean topicBean : list) {
            HashMap<String, Object> 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<ResponseResult>() {
            @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<Subject> subjects) {
        int selectSubject = 0;
        List<String> s = new ArrayList<>();
        for (Subject subject : subjects) {
            s.add(subject.getSubject());
            if (list.get(0).getSubject().equals(subject.getSubject())) {
                selectSubject = subjects.indexOf(subject);
            }
        }
        ArrayAdapter<String> 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) {

            }
        });
    }

}