Commit 216ca52fecb9e58a653ebccfb5edefbcd369c323

Authored by shixianjie
1 parent ab7bb5bf35
Exists in master

未制作解析的作业不能反馈

.idea/deploymentTargetDropDown.xml
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <project version="4"> 2 <project version="4">
3 <component name="deploymentTargetDropDown"> 3 <component name="deploymentTargetDropDown">
4 <value> 4 <value>
5 <entry key="app"> 5 <entry key="app">
6 <State> 6 <State />
7 <runningDeviceTargetSelectedWithDropDown>
8 <Target>
9 <type value="RUNNING_DEVICE_TARGET" />
10 <deviceKey>
11 <Key>
12 <type value="SERIAL_NUMBER" />
13 <value value="951f9ace" />
14 </Key>
15 </deviceKey>
16 </Target>
17 </runningDeviceTargetSelectedWithDropDown>
18 <timeTargetWasSelectedWithDropDown value="2024-10-11T03:36:34.174716500Z" />
19 </State>
20 </entry> 7 </entry>
21 </value> 8 </value>
22 </component> 9 </component>
23 </project> 10 </project>
app/src/main/java/com/hjx/parent/HomeworkDetailActivity.java
1 package com.hjx.parent; 1 package com.hjx.parent;
2 2
3 import android.annotation.SuppressLint; 3 import android.annotation.SuppressLint;
4 import android.content.Intent; 4 import android.content.Intent;
5 import android.os.Bundle; 5 import android.os.Bundle;
6 import android.widget.ImageView; 6 import android.widget.ImageView;
7 import android.widget.TextView; 7 import android.widget.TextView;
8 8
9 import androidx.annotation.NonNull; 9 import androidx.annotation.NonNull;
10 import androidx.annotation.Nullable; 10 import androidx.annotation.Nullable;
11 11
12 import com.bumptech.glide.Glide; 12 import com.bumptech.glide.Glide;
13 import com.chad.library.adapter.base.BaseQuickAdapter; 13 import com.chad.library.adapter.base.BaseQuickAdapter;
14 import com.chad.library.adapter.base.BaseViewHolder; 14 import com.chad.library.adapter.base.BaseViewHolder;
15 import com.hjx.parent.databinding.ActivityHomeworkDetailBinding; 15 import com.hjx.parent.databinding.ActivityHomeworkDetailBinding;
16 import com.hjx.parent.dialog.EditHomeworkDialog; 16 import com.hjx.parent.dialog.EditHomeworkDialog;
17 import com.hjx.parent.dialog.MsgConfirmDialog;
17 import com.hjx.parent.rx.BaseRxActivity; 18 import com.hjx.parent.rx.BaseRxActivity;
18 import com.prws.common.bean.ResponseResult; 19 import com.prws.common.bean.ResponseResult;
19 import com.prws.common.bean.Student; 20 import com.prws.common.bean.Student;
20 import com.prws.common.bean.homework.HomeWork; 21 import com.prws.common.bean.homework.HomeWork;
21 import com.prws.common.bean.homework.HomeworkList; 22 import com.prws.common.bean.homework.HomeworkList;
22 import com.prws.common.net.NetWorks; 23 import com.prws.common.net.NetWorks;
23 24
24 import java.util.ArrayList; 25 import java.util.ArrayList;
25 import java.util.HashMap; 26 import java.util.HashMap;
26 import java.util.Map; 27 import java.util.Map;
27 28
28 public class HomeworkDetailActivity extends BaseRxActivity<ActivityHomeworkDetailBinding> { 29 public class HomeworkDetailActivity extends BaseRxActivity<ActivityHomeworkDetailBinding> {
29 30
30 private HomeworkList mData; 31 private HomeworkList mData;
31 private Student student; 32 private Student student;
32 33
33 private Adapter mAdapter = new Adapter(); 34 private Adapter mAdapter = new Adapter();
34 private EditHomeworkDialog mDialog; 35 private EditHomeworkDialog mDialog;
36 private MsgConfirmDialog noAnalyseDialog;
35 37
36 @Override 38 @Override
37 public void initView(Bundle savedInstanceState) { 39 public void initView(Bundle savedInstanceState) {
38 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); 40 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
39 mData = (HomeworkList) getIntent().getSerializableExtra("data"); 41 mData = (HomeworkList) getIntent().getSerializableExtra("data");
40 student = (Student) getIntent().getSerializableExtra("student"); 42 student = (Student) getIntent().getSerializableExtra("student");
41 mDialog = new EditHomeworkDialog(this, mData); 43 mDialog = new EditHomeworkDialog(this, mData);
44 noAnalyseDialog = new MsgConfirmDialog.Builder(this)
45 .setNegative("").setPositive("好的")
46 .setMessage("尚未完成解析制作,\n请先去好记星平板端制作解析").build();
42 binding.tvTitle.setText(mData.getName()); 47 binding.tvTitle.setText(mData.getName());
43 48
44 binding.recyclerView.setAdapter(mAdapter); 49 binding.recyclerView.setAdapter(mAdapter);
45 getDetail(); 50 getDetail();
46 51
47 binding.btnFeedback.setOnClickListener(v -> { 52 binding.btnFeedback.setOnClickListener(v -> {
48 if (mAdapter.getData().size() == 0) return; 53 if (mAdapter.getData().size() == 0) return;
54 if (mData.getCompleteFlag() == 0) {
55 noAnalyseDialog.show();
56 return;
57 }
49 Intent intent = new Intent(this, HomeworkSelectActivity.class); 58 Intent intent = new Intent(this, HomeworkSelectActivity.class);
50 intent.putExtra("data", mData); 59 intent.putExtra("data", mData);
51 intent.putExtra("student", student); 60 intent.putExtra("student", student);
52 intent.putExtra("list", new ArrayList<>(mAdapter.getData())); 61 intent.putExtra("list", new ArrayList<>(mAdapter.getData()));
53 startActivityForResult(intent, 0xA01); 62 startActivityForResult(intent, 0xA01);
54 }); 63 });
55 binding.btnEdit.setOnClickListener(v -> mDialog.show(data -> { 64 binding.btnEdit.setOnClickListener(v -> mDialog.show(data -> {
56 edit(data); 65 edit(data);
57 })); 66 }));
58 } 67 }
59 68
60 @Override 69 @Override
61 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 70 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
62 super.onActivityResult(requestCode, resultCode, data); 71 super.onActivityResult(requestCode, resultCode, data);
63 if (requestCode == 0xA01 && resultCode == RESULT_OK) { 72 if (requestCode == 0xA01 && resultCode == RESULT_OK) {
64 finish(); 73 finish();
65 } 74 }
66 } 75 }
67 76
68 @SuppressLint("CheckResult") 77 @SuppressLint("CheckResult")
69 private void getDetail() { 78 private void getDetail() {
70 NetWorks.service_url.getHomeworkDetail(NetWorks.getHeader(), mData.getId()) 79 NetWorks.service_url.getHomeworkDetail(NetWorks.getHeader(), mData.getId())
71 .compose(transformSingle()) 80 .compose(transformSingle())
72 .map(ResponseResult::getData) 81 .map(ResponseResult::getData)
73 .subscribe((list, th) -> { 82 .subscribe((list, th) -> {
74 if (th != null) th.printStackTrace(); 83 if (th != null) th.printStackTrace();
75 mAdapter.setNewData(list); 84 mAdapter.setNewData(list);
76 }); 85 });
77 } 86 }
78 87
79 @SuppressLint("CheckResult") 88 @SuppressLint("CheckResult")
80 private void edit(HomeworkList data) { 89 private void edit(HomeworkList data) {
81 Map<String, Object> body = new HashMap<>(); 90 Map<String, Object> body = new HashMap<>();
82 body.put("homeworkId", data.getId()); 91 body.put("homeworkId", data.getId());
83 body.put("name", data.getName()); 92 body.put("name", data.getName());
84 body.put("grade", data.getGrade()); 93 body.put("grade", data.getGrade());
85 body.put("subject", data.getSubject()); 94 body.put("subject", data.getSubject());
86 body.put("term", data.getTerm()); 95 body.put("term", data.getTerm());
87 body.put("uploadTime", data.uploadTime); 96 body.put("uploadTime", data.uploadTime);
88 showLoadingDialog("请稍等···"); 97 showLoadingDialog("请稍等···");
89 NetWorks.service_url.editHomework(NetWorks.getHeader(), body) 98 NetWorks.service_url.editHomework(NetWorks.getHeader(), body)
90 .compose(transformSingle()) 99 .compose(transformSingle())
91 .subscribe((response, th) -> { 100 .subscribe((response, th) -> {
92 if (th != null) th.printStackTrace(); 101 if (th != null) th.printStackTrace();
93 if (response != null && response.getSuccess()) { 102 if (response != null && response.getSuccess()) {
94 cancelLoadingDialog(); 103 cancelLoadingDialog();
95 binding.tvTitle.setText(data.getName()); 104 binding.tvTitle.setText(data.getName());
96 } else { 105 } else {
97 loadFail(response == null ? "" : response.getMsg()); 106 loadFail(response == null ? "" : response.getMsg());
98 } 107 }
99 }); 108 });
100 } 109 }
101 110
102 @Override 111 @Override
103 protected ActivityHomeworkDetailBinding getViewBinding() { 112 protected ActivityHomeworkDetailBinding getViewBinding() {
104 return ActivityHomeworkDetailBinding.inflate(getLayoutInflater()); 113 return ActivityHomeworkDetailBinding.inflate(getLayoutInflater());
105 } 114 }
106 115
107 static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> { 116 static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> {
108 117
109 public Adapter() { 118 public Adapter() {
110 super(R.layout.item_homework_detail); 119 super(R.layout.item_homework_detail);
111 } 120 }
112 121
113 @SuppressLint("SetTextI18n") 122 @SuppressLint("SetTextI18n")
114 @Override 123 @Override
115 protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) { 124 protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) {
116 TextView tvNumber = holder.getView(R.id.tvNumber); 125 TextView tvNumber = holder.getView(R.id.tvNumber);
117 ImageView imageView = holder.getView(R.id.ivTopic); 126 ImageView imageView = holder.getView(R.id.ivTopic);
118 int number = getData().indexOf(homeWork) + 1; 127 int number = getData().indexOf(homeWork) + 1;
119 tvNumber.setText("第" + number + "题"); 128 tvNumber.setText("第" + number + "题");
120 Glide.with(mContext).load(homeWork.url).into(imageView); 129 Glide.with(mContext).load(homeWork.url).into(imageView);
121 130
122 holder.itemView.setOnClickListener(v -> { 131 holder.itemView.setOnClickListener(v -> {
123 Intent intent = new Intent(mContext, HomeworkTopicActivity.class); 132 Intent intent = new Intent(mContext, HomeworkTopicActivity.class);
124 intent.putExtra("position", getData().indexOf(homeWork)); 133 intent.putExtra("position", getData().indexOf(homeWork));
125 intent.putExtra("list", new ArrayList<>(getData())); 134 intent.putExtra("list", new ArrayList<>(getData()));
126 mContext.startActivity(intent); 135 mContext.startActivity(intent);
127 }); 136 });
128 } 137 }
129 } 138 }
130 } 139 }
131 140
app/src/main/java/com/hjx/parent/dialog/MsgConfirmDialog.java
1 package com.hjx.parent.dialog; 1 package com.hjx.parent.dialog;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.view.View;
4 5
5 import androidx.annotation.NonNull; 6 import androidx.annotation.NonNull;
6 7
7 import com.hjx.parent.databinding.DialogMessageConfirmBinding; 8 import com.hjx.parent.databinding.DialogMessageConfirmBinding;
8 import com.hjx.parent.function.Function10; 9 import com.hjx.parent.function.Function10;
9 10
10 public class MsgConfirmDialog extends BaseDialog<DialogMessageConfirmBinding>{ 11 public class MsgConfirmDialog extends BaseDialog<DialogMessageConfirmBinding>{
11 private CharSequence title, message, positive, negative; 12 private CharSequence title, message, positive, negative;
12 private Function10<Boolean> positiveClick, negativeClick; 13 private Function10<Boolean> positiveClick, negativeClick;
13 14
14 private MsgConfirmDialog(Builder builder) { 15 private MsgConfirmDialog(Builder builder) {
15 super(builder.context); 16 super(builder.context);
16 title = builder.title; 17 title = builder.title;
17 message = builder.message; 18 message = builder.message;
18 positive = builder.positive; 19 positive = builder.positive;
19 negative = builder.negative; 20 negative = builder.negative;
20 positiveClick = builder.positiveClick; 21 positiveClick = builder.positiveClick;
21 negativeClick = builder.negativeClick; 22 negativeClick = builder.negativeClick;
22 } 23 }
23 24
24 @Override 25 @Override
25 public void initView() { 26 public void initView() {
26 binding.tvTitle.setText(title); 27 binding.tvTitle.setText(title);
27 binding.tvMessage.setText(message); 28 binding.tvMessage.setText(message);
28 binding.btnPositive.setText(positive); 29 binding.btnPositive.setText(positive);
29 binding.btnNegative.setText(negative); 30 binding.btnNegative.setText(negative);
30 binding.btnPositive.setOnClickListener(v -> { 31 binding.btnPositive.setOnClickListener(v -> {
31 if (positiveClick != null) { 32 if (positiveClick != null) {
32 if (positiveClick.invoke()) dismiss(); 33 if (positiveClick.invoke()) dismiss();
33 } else { 34 } else {
34 dismiss(); 35 dismiss();
35 } 36 }
36 }); 37 });
37 binding.btnNegative.setOnClickListener(v -> { 38 binding.btnNegative.setOnClickListener(v -> {
38 if (negativeClick != null) { 39 if (negativeClick != null) {
39 if (negativeClick.invoke()) dismiss(); 40 if (negativeClick.invoke()) dismiss();
40 } else { 41 } else {
41 dismiss(); 42 dismiss();
42 } 43 }
43 }); 44 });
45 if (positive == null || positive.length() == 0) {
46 binding.btnPositive.setVisibility(View.GONE);
47 }
48 if (negative == null || negative.length() == 0) {
49 binding.btnNegative.setVisibility(View.GONE);
50 }
44 } 51 }
45 52
46 public void show(Function10<Boolean> positiveClick, Function10<Boolean> negativeClick) { 53 public void show(Function10<Boolean> positiveClick, Function10<Boolean> negativeClick) {
47 this.positiveClick = positiveClick; 54 this.positiveClick = positiveClick;
48 this.negativeClick = negativeClick; 55 this.negativeClick = negativeClick;
49 super.show(); 56 super.show();
50 } 57 }
51 58
52 @NonNull 59 @NonNull
53 @Override 60 @Override
54 public DialogMessageConfirmBinding getBinding() { 61 public DialogMessageConfirmBinding getBinding() {
55 return DialogMessageConfirmBinding.inflate(getLayoutInflater()); 62 return DialogMessageConfirmBinding.inflate(getLayoutInflater());
56 } 63 }
57 64
58 public static class Builder { 65 public static class Builder {
59 public Builder(Context context) { 66 public Builder(Context context) {
60 this.context = context; 67 this.context = context;
61 } 68 }
62 private Context context; 69 private Context context;
63 private CharSequence title = "温馨提示"; 70 private CharSequence title = "温馨提示";
64 private CharSequence message = ""; 71 private CharSequence message = "";
65 private CharSequence positive = "确定"; 72 private CharSequence positive = "确定";
66 private CharSequence negative = "取消"; 73 private CharSequence negative = "取消";
67 private Function10<Boolean> positiveClick = () -> true; 74 private Function10<Boolean> positiveClick = () -> true;
68 private Function10<Boolean> negativeClick = () -> true; 75 private Function10<Boolean> negativeClick = () -> true;
69 76
70 public Builder setTitle(CharSequence title) { 77 public Builder setTitle(CharSequence title) {
71 this.title = title; 78 this.title = title;
72 return this; 79 return this;
73 } 80 }
74 81
75 public Builder setMessage(CharSequence message) { 82 public Builder setMessage(CharSequence message) {
76 this.message = message; 83 this.message = message;
77 return this; 84 return this;
78 } 85 }
79 86
80 public Builder setPositive(CharSequence positive) { 87 public Builder setPositive(CharSequence positive) {
81 this.positive = positive; 88 this.positive = positive;
82 return this; 89 return this;
83 } 90 }
84 91
85 public Builder setNegative(CharSequence negative) { 92 public Builder setNegative(CharSequence negative) {
86 this.negative = negative; 93 this.negative = negative;
87 return this; 94 return this;
88 } 95 }
89 96
90 public Builder setPositiveClick(Function10<Boolean> positiveClick) { 97 public Builder setPositiveClick(Function10<Boolean> positiveClick) {
91 this.positiveClick = positiveClick; 98 this.positiveClick = positiveClick;
92 return this; 99 return this;
93 } 100 }
94 101
95 public Builder setNegativeClick(Function10<Boolean> negativeClick) { 102 public Builder setNegativeClick(Function10<Boolean> negativeClick) {
96 this.negativeClick = negativeClick; 103 this.negativeClick = negativeClick;
97 return this; 104 return this;
98 } 105 }
99 106
100 public MsgConfirmDialog build() { 107 public MsgConfirmDialog build() {
101 return new MsgConfirmDialog(this); 108 return new MsgConfirmDialog(this);
102 } 109 }
103 } 110 }
104 } 111 }
105 112
app/src/main/res/layout/dialog_message_confirm.xml
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <FrameLayout 2 <FrameLayout
3 xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:app="http://schemas.android.com/apk/res-auto"
5 xmlns:tools="http://schemas.android.com/tools" 5 xmlns:tools="http://schemas.android.com/tools"
6 android:layout_width="match_parent" 6 android:layout_width="match_parent"
7 android:layout_height="match_parent"> 7 android:layout_height="match_parent">
8 8
9 <LinearLayout 9 <LinearLayout
10 android:orientation="vertical" 10 android:orientation="vertical"
11 android:background="@drawable/shape_radius_10" 11 android:background="@drawable/shape_radius_10"
12 android:backgroundTint="@color/white" 12 android:backgroundTint="@color/white"
13 android:layout_gravity="center" 13 android:layout_gravity="center"
14 android:layout_width="280dp" 14 android:layout_width="280dp"
15 android:layout_height="wrap_content"> 15 android:layout_height="wrap_content">
16 16
17 <TextView 17 <TextView
18 android:id="@+id/tvTitle" 18 android:id="@+id/tvTitle"
19 tools:text="温馨提示" 19 tools:text="温馨提示"
20 android:textSize="18sp" 20 android:textSize="18sp"
21 android:textColor="#333" 21 android:textColor="#333"
22 android:textStyle="bold" 22 android:textStyle="bold"
23 android:layout_gravity="center_horizontal" 23 android:layout_gravity="center_horizontal"
24 android:layout_marginTop="20dp" 24 android:layout_marginTop="20dp"
25 android:layout_width="wrap_content" 25 android:layout_width="wrap_content"
26 android:layout_height="wrap_content"/> 26 android:layout_height="wrap_content"/>
27 27
28 <TextView 28 <TextView
29 android:id="@+id/tvMessage" 29 android:id="@+id/tvMessage"
30 tools:text="确认要删除吗?一旦删除不可恢复" 30 tools:text="确认要删除吗?一旦删除不可恢复"
31 android:textSize="14sp" 31 android:textSize="14sp"
32 android:textColor="#333" 32 android:textColor="#333"
33 android:gravity="center" 33 android:gravity="center"
34 android:layout_marginHorizontal="15dp" 34 android:layout_marginHorizontal="15dp"
35 android:layout_marginTop="16dp" 35 android:layout_marginTop="16dp"
36 android:layout_width="match_parent" 36 android:layout_width="match_parent"
37 android:layout_height="wrap_content"/> 37 android:layout_height="wrap_content"/>
38 <View 38 <View
39 android:background="#EEE" 39 android:background="#EEE"
40 android:layout_marginHorizontal="10dp" 40 android:layout_marginHorizontal="10dp"
41 android:layout_marginTop="26dp" 41 android:layout_marginTop="26dp"
42 android:layout_width="match_parent" 42 android:layout_width="match_parent"
43 android:layout_height="1dp"/> 43 android:layout_height="1dp"/>
44 <LinearLayout 44 <LinearLayout
45 android:orientation="horizontal" 45 android:orientation="horizontal"
46 android:weightSum="2"
47 android:layout_width="match_parent" 46 android:layout_width="match_parent"
48 android:layout_height="44dp"> 47 android:layout_height="44dp">
49 <TextView 48 <TextView
50 android:id="@+id/btnNegative" 49 android:id="@+id/btnNegative"
51 tools:text="取消" 50 tools:text="取消"
52 android:textSize="17sp" 51 android:textSize="17sp"
53 android:textColor="#999" 52 android:textColor="#999"
54 android:textStyle="bold" 53 android:textStyle="bold"
55 android:gravity="center" 54 android:gravity="center"
56 android:layout_weight="1" 55 android:layout_weight="1"
57 android:layout_width="0dp" 56 android:layout_width="0dp"
58 android:layout_height="match_parent"/> 57 android:layout_height="match_parent"/>
59 <View 58 <View
60 android:background="#EEE" 59 android:background="#EEE"
61 android:layout_marginVertical="3dp" 60 android:layout_marginVertical="3dp"
62 android:layout_width="1dp" 61 android:layout_width="1dp"
62 android:layout_marginStart="1dp"
63 android:layout_height="match_parent"/> 63 android:layout_height="match_parent"/>
64 <TextView 64 <TextView
65 android:id="@+id/btnPositive" 65 android:id="@+id/btnPositive"
66 tools:text="确定" 66 tools:text="确定"
67 android:textSize="17sp" 67 android:textSize="17sp"
68 android:textColor="#1C90F3" 68 android:textColor="#1C90F3"
69 android:textStyle="bold" 69 android:textStyle="bold"
70 android:gravity="center" 70 android:gravity="center"
71 android:layout_weight="1" 71 android:layout_weight="1"
72 android:layout_width="0dp" 72 android:layout_width="0dp"
73 android:layout_height="match_parent"/> 73 android:layout_height="match_parent"/>
74 </LinearLayout> 74 </LinearLayout>
75 </LinearLayout> 75 </LinearLayout>
76 76