From 06daaf123b5d0629ed8c83516721632eb2b5bf8d Mon Sep 17 00:00:00 2001 From: shixianjie Date: Tue, 8 Oct 2024 14:20:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hjx/parent/HomeworkDetailActivity.java | 31 ++++ .../com/hjx/parent/dialog/EditHomeworkDialog.java | 189 +++++++++++++++++++++ .../main/res/layout/activity_homework_detail.xml | 6 + app/src/main/res/layout/dialog_add_homework.xml | 6 +- .../main/java/com/prws/common/net/NetWorks.java | 6 + 5 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/hjx/parent/dialog/EditHomeworkDialog.java diff --git a/app/src/main/java/com/hjx/parent/HomeworkDetailActivity.java b/app/src/main/java/com/hjx/parent/HomeworkDetailActivity.java index 9aec42b..d3194a8 100644 --- a/app/src/main/java/com/hjx/parent/HomeworkDetailActivity.java +++ b/app/src/main/java/com/hjx/parent/HomeworkDetailActivity.java @@ -12,6 +12,7 @@ import com.bumptech.glide.Glide; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.hjx.parent.databinding.ActivityHomeworkDetailBinding; +import com.hjx.parent.dialog.EditHomeworkDialog; import com.hjx.parent.rx.BaseRxActivity; import com.prws.common.bean.ResponseResult; import com.prws.common.bean.Student; @@ -20,6 +21,8 @@ import com.prws.common.bean.homework.HomeworkList; import com.prws.common.net.NetWorks; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class HomeworkDetailActivity extends BaseRxActivity { @@ -27,12 +30,14 @@ public class HomeworkDetailActivity extends BaseRxActivity onBackPressed()); mData = (HomeworkList) getIntent().getSerializableExtra("data"); student = (Student) getIntent().getSerializableExtra("student"); + mDialog = new EditHomeworkDialog(this, mData); binding.tvTitle.setText(mData.getName()); binding.recyclerView.setAdapter(mAdapter); @@ -46,6 +51,9 @@ public class HomeworkDetailActivity extends BaseRxActivity(mAdapter.getData())); startActivity(intent); }); + binding.btnEdit.setOnClickListener(v -> mDialog.show(data -> { + edit(data); + })); } @SuppressLint("CheckResult") @@ -59,6 +67,29 @@ public class HomeworkDetailActivity extends BaseRxActivity body = new HashMap<>(); + body.put("homeworkId", data.getId()); + body.put("name", data.getName()); + body.put("grade", data.getGrade()); + body.put("subject", data.getSubject()); + body.put("term", data.getTerm()); + body.put("uploadTime", data.uploadTime); + showLoadingDialog("请稍等···"); + NetWorks.service_url.editHomework(NetWorks.getHeader(), body) + .compose(transformSingle()) + .subscribe((response, th) -> { + if (th != null) th.printStackTrace(); + if (response != null && response.getSuccess()) { + cancelLoadingDialog(); + binding.tvTitle.setText(data.getName()); + } else { + loadFail(response == null ? "" : response.getMsg()); + } + }); + } + @Override protected ActivityHomeworkDetailBinding getViewBinding() { return ActivityHomeworkDetailBinding.inflate(getLayoutInflater()); diff --git a/app/src/main/java/com/hjx/parent/dialog/EditHomeworkDialog.java b/app/src/main/java/com/hjx/parent/dialog/EditHomeworkDialog.java new file mode 100644 index 0000000..a23cc26 --- /dev/null +++ b/app/src/main/java/com/hjx/parent/dialog/EditHomeworkDialog.java @@ -0,0 +1,189 @@ +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()); + } +} diff --git a/app/src/main/res/layout/activity_homework_detail.xml b/app/src/main/res/layout/activity_homework_detail.xml index fb12e87..d4e6469 100644 --- a/app/src/main/res/layout/activity_homework_detail.xml +++ b/app/src/main/res/layout/activity_homework_detail.xml @@ -25,6 +25,12 @@ android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content"/> + uploadHomeworkFeedback(@Header("Authorization") String token, @Body Map map); + @POST("api/v1/homework/editHomeworkInfo") + Single> editHomework( + @Header("Authorization") String token, + @Body Object body + ); + } public static String getUserId() { -- 1.9.0