From 07abc9da6376a50bd7c2bf6479a084c7768ba2ec Mon Sep 17 00:00:00 2001 From: shixianjie Date: Thu, 20 Mar 2025 17:01:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=8F=8D=E9=A6=88=E4=BF=AE?= =?UTF-8?q?=E6=94=B9,=20=E6=B7=BB=E5=8A=A0=E6=9C=AA=E5=81=9A=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hjx/parent/HomeworkFeedbackActivity.java | 85 ++++++++++++------- .../com/hjx/parent/HomeworkSelectActivity.java | 97 ++++++++++------------ .../java/com/hjx/parent/HomeworkTopicActivity.java | 9 +- app/src/main/res/drawable/bg_feedback_blank.xml | 6 ++ app/src/main/res/drawable/bg_feedback_error.xml | 6 ++ app/src/main/res/drawable/bg_feedback_right.xml | 6 ++ app/src/main/res/drawable/btn_feedback_blank.xml | 16 ++++ app/src/main/res/drawable/btn_feedback_error.xml | 16 ++++ app/src/main/res/drawable/btn_feedback_right.xml | 16 ++++ app/src/main/res/drawable/shape_radius_10.xml | 1 + .../main/res/layout/activity_homework_feedback.xml | 35 ++++++-- .../main/res/layout/activity_homework_select.xml | 24 +++--- app/src/main/res/layout/item_homework_detail.xml | 53 +++++++++++- .../com/prws/common/bean/homework/Correction.java | 16 ---- .../prws/common/bean/homework/CorrectionSer.java | 2 +- .../com/prws/common/bean/homework/HomeWork.java | 3 +- .../main/java/com/prws/common/net/NetWorks.java | 2 +- 17 files changed, 267 insertions(+), 126 deletions(-) create mode 100644 app/src/main/res/drawable/bg_feedback_blank.xml create mode 100644 app/src/main/res/drawable/bg_feedback_error.xml create mode 100644 app/src/main/res/drawable/bg_feedback_right.xml create mode 100644 app/src/main/res/drawable/btn_feedback_blank.xml create mode 100644 app/src/main/res/drawable/btn_feedback_error.xml create mode 100644 app/src/main/res/drawable/btn_feedback_right.xml delete mode 100644 libs/common/src/main/java/com/prws/common/bean/homework/Correction.java diff --git a/app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java b/app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java index 16e24ad..67e44ac 100644 --- a/app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java +++ b/app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java @@ -19,7 +19,6 @@ import com.google.gson.Gson; import com.hjx.parent.databinding.ActivityHomeworkFeedbackBinding; import com.hjx.parent.rx.BaseRxActivity; import com.prws.common.bean.Student; -import com.prws.common.bean.homework.Correction; import com.prws.common.bean.homework.CorrectionPoint; import com.prws.common.bean.homework.CorrectionSer; import com.prws.common.bean.homework.HomeWork; @@ -41,7 +40,7 @@ public class HomeworkFeedbackActivity extends BaseRxActivity mList; - private List corrections = new ArrayList<>(); + private List corrections = new ArrayList<>(); @SuppressWarnings("unchecked") @Override @@ -54,20 +53,40 @@ public class HomeworkFeedbackActivity extends BaseRxActivity correctList = new ArrayList<>(); List errorList = new ArrayList<>(); - int correctNo = 0; + List blankList = new ArrayList<>(); + int correctNo = 0, blankNo = 0; for (HomeWork homeWork: mList) { homeWork.state = 1; homeWork.index = mList.indexOf(homeWork); - corrections.add(new Correction(homeWork.brief, homeWork.check ? 1 : 0)); - if (!homeWork.check) correctNo ++; - else errorList.add(homeWork); + corrections.add(homeWork.toSer()); + if (homeWork.correction == 0) { + correctList.add(homeWork); + correctNo ++; + } + else if (homeWork.correction == 1) { + correctList.add(homeWork); + errorList.add(homeWork); + } + else if (homeWork.correction == 2) { + blankList.add(homeWork); + blankNo ++; + } } - binding.tvPercent.setText(new DecimalFormat("0%").format(1f * correctNo / mList.size())); + binding.viewBlank.setVisibility(blankList.isEmpty() ? View.GONE : View.VISIBLE); + binding.rvBlank.setVisibility(blankList.isEmpty() ? View.GONE : View.VISIBLE); + + float rate = 1f * correctNo / Math.max(mList.size() - blankNo, 1); + binding.tvPercent.setText(new DecimalFormat("0%").format(rate)); binding.rvCorrect.setLayoutManager(new FlexboxLayoutManager(this)); - NumberAdapter numberAdapter = new NumberAdapter(mList); + binding.rvBlank.setLayoutManager(new FlexboxLayoutManager(this)); + NumberAdapter numberAdapter = new NumberAdapter(correctList); + NumberAdapter blankAdapter = new NumberAdapter(blankList); binding.rvCorrect.setAdapter(numberAdapter); + binding.rvBlank.setAdapter(blankAdapter); + binding.rvError.setVisibility(errorList.isEmpty() ? View.GONE : View.VISIBLE); binding.rvError.setAdapter(new EvalAdapter(errorList)); if (errorList.isEmpty()) { @@ -77,9 +96,15 @@ public class HomeworkFeedbackActivity extends BaseRxActivity { viewTopicDetail(0); }); + binding.btnDetail2.setOnClickListener(v -> { + viewTopicDetail(0); + }); numberAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> { viewTopicDetail(i); }); + blankAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> { + viewTopicDetail(i); + }); binding.btnPublish.setOnClickListener(v -> submit()); } @@ -153,29 +178,31 @@ public class HomeworkFeedbackActivity extends BaseRxActivity mList; private Adapter mAdapter = new Adapter(); - MutableLiveData selectNum = new MutableLiveData<>(0); - @SuppressLint("NotifyDataSetChanged") @SuppressWarnings("unchecked,ConstantConditions") @Override @@ -45,32 +39,31 @@ public class HomeworkSelectActivity extends BaseRxActivity) getIntent().getSerializableExtra("list"); + if (mList == null) mList = new ArrayList<>(); + for (HomeWork homeWork: mList) { + homeWork.correction = 0; + } mAdapter.setNewData(mList); binding.recyclerView.setAdapter(mAdapter); - mAdapter.selectCall = i -> selectNum.setValue(selectNum.getValue() + i); - selectNum.observe(this, i -> { - binding.tvNumber.setText(String.valueOf(i)); - if (i == 0) { - binding.btnConfirm.setText("作业全对"); - binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78)); - } else { - binding.btnConfirm.setText("下一步"); - binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF1C90F3)); + mAdapter.selectCall = () -> { + int right = 0, error = 0, blank = 0; + for (HomeWork homeWork: mList) { + if (homeWork.correction == 0) right ++; + else if (homeWork.correction == 1) error ++; + else if (homeWork.correction == 2) blank ++; } - binding.chkAll.setChecked(i == mList.size() && i != 0); - }); - - binding.chkAll.setOnClickListener(v -> { - if (mList.size() == 0) return; - boolean b = binding.chkAll.isChecked(); - for (HomeWork item: mList) { - item.check = b; - } - selectNum.setValue(b ? mList.size() : 0); - mAdapter.notifyDataSetChanged(); - }); + binding.tvNumber.setText(String.valueOf(error)); + binding.tvBlankNumber.setText(String.valueOf(blank)); +// if (right == mList.size()) { +// binding.btnConfirm.setText("作业全对"); +// binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78)); +// } else { +// binding.btnConfirm.setText("下一步"); +// binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF1C90F3)); +// } + }; binding.btnConfirm.setOnClickListener(v -> { Intent intent = new Intent(this, HomeworkFeedbackActivity.class); @@ -100,7 +93,7 @@ public class HomeworkSelectActivity extends BaseRxActivity selectCall; + public Function0 selectCall; @SuppressLint("SetTextI18n") @Override @@ -111,32 +104,30 @@ public class HomeworkSelectActivity extends BaseRxActivity checkBox.performClick()); - checkBox.setOnCheckedChangeListener((v, b) -> { - homeWork.check = b; - if (selectCall != null) { - selectCall.invoke(b ? 1 : -1); - } - if (homeWork.check) { - holder.itemView.setForeground(getDrawable(R.drawable.border_radius_10_red)); - } else { - holder.itemView.setForeground(null); - } + setBackground(homeWork, holder); + RadioGroup radioGroup = holder.getView(R.id.radioGroup); + radioGroup.setVisibility(View.VISIBLE); + + radioGroup.setOnCheckedChangeListener((group, checkedId) -> { + if (checkedId == R.id.rbRight) homeWork.correction = 0; + else if (checkedId == R.id.rbError) homeWork.correction = 1; + else if (checkedId == R.id.rbBlank) homeWork.correction = 2; + setBackground(homeWork, holder); + selectCall.invoke(); }); } - private Drawable getDrawable(@DrawableRes int res) { - return ResourcesCompat.getDrawable(mContext.getResources(), res, null); + private void setBackground(HomeWork homeWork, BaseViewHolder helper) { + if (homeWork.correction == 0) { + helper.setBackgroundRes(R.id.root, R.drawable.bg_feedback_right); + helper.setChecked(R.id.rbRight, true); + } else if (homeWork.correction == 1) { + helper.setBackgroundRes(R.id.root, R.drawable.bg_feedback_error); + helper.setChecked(R.id.rbError, true); + } else if (homeWork.correction == 2) { + helper.setBackgroundRes(R.id.root, R.drawable.bg_feedback_blank); + helper.setChecked(R.id.rbBlank, true); + } } } } diff --git a/app/src/main/java/com/hjx/parent/HomeworkTopicActivity.java b/app/src/main/java/com/hjx/parent/HomeworkTopicActivity.java index ab770c4..25b1137 100644 --- a/app/src/main/java/com/hjx/parent/HomeworkTopicActivity.java +++ b/app/src/main/java/com/hjx/parent/HomeworkTopicActivity.java @@ -92,8 +92,13 @@ public class HomeworkTopicActivity extends BaseRxActivity + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_feedback_error.xml b/app/src/main/res/drawable/bg_feedback_error.xml new file mode 100644 index 0000000..cef8b7b --- /dev/null +++ b/app/src/main/res/drawable/bg_feedback_error.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_feedback_right.xml b/app/src/main/res/drawable/bg_feedback_right.xml new file mode 100644 index 0000000..26b2384 --- /dev/null +++ b/app/src/main/res/drawable/bg_feedback_right.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_feedback_blank.xml b/app/src/main/res/drawable/btn_feedback_blank.xml new file mode 100644 index 0000000..61699cb --- /dev/null +++ b/app/src/main/res/drawable/btn_feedback_blank.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_feedback_error.xml b/app/src/main/res/drawable/btn_feedback_error.xml new file mode 100644 index 0000000..c95fcc5 --- /dev/null +++ b/app/src/main/res/drawable/btn_feedback_error.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_feedback_right.xml b/app/src/main/res/drawable/btn_feedback_right.xml new file mode 100644 index 0000000..f853315 --- /dev/null +++ b/app/src/main/res/drawable/btn_feedback_right.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_radius_10.xml b/app/src/main/res/drawable/shape_radius_10.xml index a59e2fe..a08cadd 100644 --- a/app/src/main/res/drawable/shape_radius_10.xml +++ b/app/src/main/res/drawable/shape_radius_10.xml @@ -1,4 +1,5 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_homework_feedback.xml b/app/src/main/res/layout/activity_homework_feedback.xml index 5a26e2e..da42e9e 100644 --- a/app/src/main/res/layout/activity_homework_feedback.xml +++ b/app/src/main/res/layout/activity_homework_feedback.xml @@ -144,6 +144,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"/> + - + + + + + diff --git a/app/src/main/res/layout/activity_homework_select.xml b/app/src/main/res/layout/activity_homework_select.xml index 0fb2ecb..ead8061 100644 --- a/app/src/main/res/layout/activity_homework_select.xml +++ b/app/src/main/res/layout/activity_homework_select.xml @@ -34,33 +34,29 @@ android:layout_marginBottom="8dp" android:layout_width="match_parent" android:layout_height="wrap_content"> - + - diff --git a/app/src/main/res/layout/item_homework_detail.xml b/app/src/main/res/layout/item_homework_detail.xml index c5d6701..bd628c3 100644 --- a/app/src/main/res/layout/item_homework_detail.xml +++ b/app/src/main/res/layout/item_homework_detail.xml @@ -2,15 +2,15 @@ + tools:ignore="SmallSp,HardcodedText"> + + + + + +