ErrorInputDialog.java 12 KB
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<TopicBean> 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<TopicBean> 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<String> grades = new ArrayList<>();
        for (GradeAndSubject grade : App.getInstance().getGradeAndSubjects()) {
            grades.add(grade.getGrade().getGrade());
        }
        ArrayAdapter<String> 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<String> 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<String> 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<Subject> subjects) {
        List<String> s = new ArrayList<>();
        for (Subject subject : subjects) {
            s.add(subject.getSubject());
        }
        ArrayAdapter<String> 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<String, String> 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<ResponseResult>() {
                @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() {

                }
            });
        }
    }
}