package com.hjx.parent.dialog; import android.annotation.SuppressLint; import android.content.Context; import android.util.Pair; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Toast; import androidx.annotation.NonNull; import com.bigkoo.pickerview.builder.TimePickerBuilder; import com.google.gson.Gson; import com.hjx.parent.R; import com.hjx.parent.bean.StudentBean; import com.hjx.parent.databinding.DialogAddHomeworkBinding; import com.hjx.parent.function.Function1; import com.hjx.parent.rx.BaseRxActivity; import com.prws.common.bean.GradeAndSubject; import com.prws.common.bean.ResponseResult; import com.prws.common.bean.Student; import com.prws.common.bean.Subject; import com.prws.common.bean.baidu.BaiduInput; import com.prws.common.bean.homework.HomeworkList; import com.prws.common.net.NetWorks; import com.prws.common.utils.SharedPreferencesUtil; import com.trello.rxlifecycle2.android.RxLifecycleAndroid; import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; public class EditHomeworkDialog extends BaseDialog{ private final BaseRxActivity activity; private Function1 callback; HomeworkList mData; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.CHINA); List gradeAndSubjectList; String grade; String term; String subject; Date uploadTime; public EditHomeworkDialog(BaseRxActivity context, HomeworkList data) { super((Context) context); activity = context; mData = data; uploadTime = data.uploadTime; } public void show(Function1 callback) { this.callback = callback; super.show(); } @SuppressLint("SetTextI18n") @Override public void initView() { binding.tvTitle.setText("编辑作业"); binding.btnClose.setOnClickListener(v -> dismiss()); binding.tvStu.setVisibility(View.GONE); binding.spStudent.setVisibility(View.GONE); binding.spTerm.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) { } }); binding.spGrade.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { grade = gradeAndSubjectList.get(position).getGrade().getGrade(); refreshSubjects(position); } @Override public void onNothingSelected(AdapterView parent) { } }); binding.tvDate.setText(dateFormat.format(uploadTime)); binding.tvDate.setOnClickListener(v -> { Calendar calendar = Calendar.getInstance(); calendar.setTime(uploadTime); new TimePickerBuilder(getContext(), (date, v1) -> { uploadTime = date; binding.tvDate.setText(dateFormat.format(uploadTime)); binding.etName.setText(dateFormat.format(uploadTime) + subject + "作业"); }).setType(new boolean[]{true, true, true, false, false, false}).setDate(calendar) .isDialog(true).build().show(); }); binding.btnConfirm.setOnClickListener(v -> { String name = binding.etName.getText().toString().trim(); if (name.isEmpty()) { Toast.makeText(getContext(), "请输入作业名称", Toast.LENGTH_SHORT).show(); return; } dismiss(); if (callback != null) { mData.setGrade(grade); mData.setTerm(term); mData.setSubject(subject); mData.uploadTime = uploadTime; mData.setName(name); callback.invoke(mData); } }); getGrade(); } @SuppressLint("CheckResult") private void getGrade() { NetWorks.service_url.listGradeAndSubject(NetWorks.getHeader()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycleAndroid.bindActivity(activity.getRxLifecycle())) .map(ResponseResult::getData) .firstOrError() .subscribe((data, th) -> { if (th != null) th.printStackTrace(); if (data != null && data.size() > 0) { gradeAndSubjectList = data; List grades = new ArrayList<>(); for (GradeAndSubject it: data) { grades.add(it.getGrade().getGrade()); } binding.spGrade.setAdapter(new ArrayAdapter<>(getContext(), R.layout.item_spinner, grades)); int p = 0; for (GradeAndSubject it: gradeAndSubjectList) { if (it.getGrade().getGrade().equals(mData.getGrade())) { p = gradeAndSubjectList.indexOf(it); break; } } binding.spGrade.setSelection(p); } }); } private void refreshSubjects(int gradePosition) { if (gradeAndSubjectList == null) return; List subjectList = gradeAndSubjectList.get(gradePosition).getSubjects(); List subjects = new ArrayList<>(); for (Subject s: subjectList) { subjects.add(s.getSubject()); } int position = Math.max(subjects.indexOf(mData.getSubject()), 0); binding.spSubject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @SuppressLint("SetTextI18n") @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { subject = subjects.get(position); binding.etName.setText(dateFormat.format(uploadTime) + subject + "作业"); } @Override public void onNothingSelected(AdapterView parent) { } }); binding.spSubject.setAdapter(new ArrayAdapter<>(getContext(), R.layout.item_spinner, subjects)); binding.spSubject.setSelection(position); } @NonNull @Override public DialogAddHomeworkBinding getBinding() { return DialogAddHomeworkBinding.inflate(getLayoutInflater()); } }