Commit a0aac741c4f20b5bb58ec87a82d4255b61df629a

Authored by shixianjie
1 parent 06daaf123b
Exists in master

作业列表刷新

app/src/main/java/com/hjx/parent/StuHomeworkActivity.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.LinearLayout; 6 import android.widget.LinearLayout;
7 import android.widget.PopupWindow; 7 import android.widget.PopupWindow;
8 8
9 import androidx.annotation.Nullable; 9 import androidx.annotation.Nullable;
10 import androidx.lifecycle.MutableLiveData; 10 import androidx.lifecycle.MutableLiveData;
11 11
12 import com.google.gson.Gson; 12 import com.google.gson.Gson;
13 import com.hjx.parent.adapter.HomeworkListAdapter; 13 import com.hjx.parent.adapter.HomeworkListAdapter;
14 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; 14 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding;
15 import com.hjx.parent.databinding.PopupFilterFeedbackBinding; 15 import com.hjx.parent.databinding.PopupFilterFeedbackBinding;
16 import com.hjx.parent.databinding.PopupFilterGradeBinding; 16 import com.hjx.parent.databinding.PopupFilterGradeBinding;
17 import com.hjx.parent.databinding.PopupFilterSubjectBinding; 17 import com.hjx.parent.databinding.PopupFilterSubjectBinding;
18 import com.hjx.parent.databinding.PopupFilterTermBinding; 18 import com.hjx.parent.databinding.PopupFilterTermBinding;
19 import com.hjx.parent.dialog.MsgConfirmDialog; 19 import com.hjx.parent.dialog.MsgConfirmDialog;
20 import com.hjx.parent.rx.BaseRxActivity; 20 import com.hjx.parent.rx.BaseRxActivity;
21 import com.prws.common.bean.Student; 21 import com.prws.common.bean.Student;
22 import com.prws.common.bean.homework.HomeworkList; 22 import com.prws.common.bean.homework.HomeworkList;
23 import com.prws.common.net.NetWorks; 23 import com.prws.common.net.NetWorks;
24 import com.prws.common.utils.SharedPreferencesUtil; 24 import com.prws.common.utils.SharedPreferencesUtil;
25 import com.trello.rxlifecycle2.android.RxLifecycleAndroid; 25 import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
26 26
27 import java.util.Collections; 27 import java.util.Collections;
28 28
29 import io.reactivex.Observable; 29 import io.reactivex.Observable;
30 import io.reactivex.android.schedulers.AndroidSchedulers; 30 import io.reactivex.android.schedulers.AndroidSchedulers;
31 import io.reactivex.schedulers.Schedulers; 31 import io.reactivex.schedulers.Schedulers;
32 32
33 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { 33 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> {
34 34
35 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); 35 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter();
36 36
37 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; 37 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter;
38 MsgConfirmDialog deleteDialog; 38 MsgConfirmDialog deleteDialog;
39 State state = new State(); 39 State state = new State();
40 40
41 private void handlerIntent() { 41 private void handlerIntent() {
42 String json = getIntent().getStringExtra("studentJson"); 42 String json = getIntent().getStringExtra("studentJson");
43 if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); 43 if (json == null) json = (String) SharedPreferencesUtil.getData("student", "");
44 try { state.student = new Gson().fromJson(json, Student.class); } 44 try { state.student = new Gson().fromJson(json, Student.class); }
45 catch (Throwable t) { t.printStackTrace(); } 45 catch (Throwable t) { t.printStackTrace(); }
46 } 46 }
47 47
48 @SuppressLint("SetTextI18n") 48 @SuppressLint("SetTextI18n")
49 @Override 49 @Override
50 public void initView(Bundle savedInstanceState) { 50 public void initView(Bundle savedInstanceState) {
51 handlerIntent(); 51 handlerIntent();
52 if (state.student == null) { 52 if (state.student == null) {
53 finish(); 53 finish();
54 return; 54 return;
55 } 55 }
56 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); 56 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
57 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 57 binding.tvTitle.setText(state.student.stuName + "的全部作业");
58 58
59 binding.recyclerView.setAdapter(homeworkAdapter); 59 binding.recyclerView.setAdapter(homeworkAdapter);
60 getHomework();
61 60
62 binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); 61 binding.ftSubject.setOnClickListener(v -> showSubjectFilter());
63 binding.ftGrade.setOnClickListener(v -> showGradeFilter()); 62 binding.ftGrade.setOnClickListener(v -> showGradeFilter());
64 binding.ftTerm.setOnClickListener(v -> showTermFilter()); 63 binding.ftTerm.setOnClickListener(v -> showTermFilter());
65 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); 64 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter());
66 homeworkAdapter.deleteCall = data -> { 65 homeworkAdapter.deleteCall = data -> {
67 if (deleteDialog == null) { 66 if (deleteDialog == null) {
68 deleteDialog = new MsgConfirmDialog.Builder(this) 67 deleteDialog = new MsgConfirmDialog.Builder(this)
69 .setMessage("确认要删除吗?一旦删除不可恢复") 68 .setMessage("确认要删除吗?一旦删除不可恢复")
70 .setPositive("暂不删除") 69 .setPositive("暂不删除")
71 .setNegative("确定删除") 70 .setNegative("确定删除")
72 .build(); 71 .build();
73 } 72 }
74 deleteDialog.show(() -> { 73 deleteDialog.show(() -> {
75 deleteHomework(data); 74 deleteHomework(data);
76 return true; 75 return true;
77 }, null); 76 }, null);
78 }; 77 };
79 homeworkAdapter.detailCall = data -> { 78 homeworkAdapter.detailCall = data -> {
80 Intent intent = new Intent(this, HomeworkDetailActivity.class); 79 Intent intent = new Intent(this, HomeworkDetailActivity.class);
81 intent.putExtra("data", data); 80 intent.putExtra("data", data);
82 intent.putExtra("student", state.student); 81 intent.putExtra("student", state.student);
83 startActivity(intent); 82 startActivity(intent);
84 }; 83 };
85 84
86 binding.btnChangeStudent.setOnClickListener(v -> { 85 binding.btnChangeStudent.setOnClickListener(v -> {
87 Intent intent = new Intent(this, TeacherChooseActivity.class); 86 Intent intent = new Intent(this, TeacherChooseActivity.class);
88 intent.putExtra("needBack", true); 87 intent.putExtra("needBack", true);
89 startActivityForResult(intent, 0xA01); 88 startActivityForResult(intent, 0xA01);
90 }); 89 });
91 } 90 }
92 91
92 @Override
93 protected void onStart() {
94 super.onStart();
95 getHomework();
96 }
97
93 @SuppressLint("SetTextI18n") 98 @SuppressLint("SetTextI18n")
94 @Override 99 @Override
95 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 100 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
96 super.onActivityResult(requestCode, resultCode, data); 101 super.onActivityResult(requestCode, resultCode, data);
97 if (requestCode == 0xA01 && resultCode == RESULT_OK) { 102 if (requestCode == 0xA01 && resultCode == RESULT_OK) {
98 String json = (String) SharedPreferencesUtil.getData("student", ""); 103 String json = (String) SharedPreferencesUtil.getData("student", "");
99 try { 104 try {
100 state.student = new Gson().fromJson(json, Student.class); 105 state.student = new Gson().fromJson(json, Student.class);
101 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 106 binding.tvTitle.setText(state.student.stuName + "的全部作业");
102 getHomework(); 107 getHomework();
103 } 108 }
104 catch (Throwable t) { t.printStackTrace(); } 109 catch (Throwable t) { t.printStackTrace(); }
105 } 110 }
106 } 111 }
107 112
108 @SuppressLint("CheckResult") 113 @SuppressLint("CheckResult")
109 protected void deleteHomework(HomeworkList data) { 114 protected void deleteHomework(HomeworkList data) {
110 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId()) 115 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId())
111 .subscribeOn(Schedulers.io()) 116 .subscribeOn(Schedulers.io())
112 .observeOn(AndroidSchedulers.mainThread()) 117 .observeOn(AndroidSchedulers.mainThread())
113 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 118 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
114 .subscribe((response, th) -> { 119 .subscribe((response, th) -> {
115 if (th != null) th.printStackTrace(); 120 if (th != null) th.printStackTrace();
116 if (response != null && response.getSuccess()) { 121 if (response != null && response.getSuccess()) {
117 getHomework(); 122 getHomework();
118 } 123 }
119 }); 124 });
120 125
121 } 126 }
122 127
123 @SuppressLint("CheckResult") 128 @SuppressLint("CheckResult")
124 protected void getHomework() { 129 protected void getHomework() {
125 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) 130 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId)
126 .subscribeOn(Schedulers.io()) 131 .subscribeOn(Schedulers.io())
127 .observeOn(AndroidSchedulers.mainThread()) 132 .observeOn(AndroidSchedulers.mainThread())
128 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 133 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
129 .toObservable() 134 .toObservable()
130 .flatMap(response -> Observable.fromIterable(response.getData())) 135 .flatMap(response -> Observable.fromIterable(response.getData()))
131 // 过滤 136 // 过滤
132 .filter(data -> { // 学科 137 .filter(data -> { // 学科
133 String subject = state.subject.getValue(); 138 String subject = state.subject.getValue();
134 if (subject == null || subject.isEmpty()) return true; 139 if (subject == null || subject.isEmpty()) return true;
135 else return subject.equals(data.getSubject()); 140 else return subject.equals(data.getSubject());
136 }) 141 })
137 .filter(data -> { // 年级 142 .filter(data -> { // 年级
138 String grade = state.grade.getValue(); 143 String grade = state.grade.getValue();
139 if (grade == null || grade.isEmpty()) return true; 144 if (grade == null || grade.isEmpty()) return true;
140 else return grade.equals(data.getGrade()); 145 else return grade.equals(data.getGrade());
141 }) 146 })
142 .filter(data -> { // 学期 147 .filter(data -> { // 学期
143 String term = state.term.getValue(); 148 String term = state.term.getValue();
144 if (term == null || term.isEmpty()) return true; 149 if (term == null || term.isEmpty()) return true;
145 else return term.equals(data.getTerm()); 150 else return term.equals(data.getTerm());
146 }) 151 })
147 .filter(data -> { // 反馈 152 .filter(data -> { // 反馈
148 Integer feedback = state.feedback.getValue(); 153 Integer feedback = state.feedback.getValue();
149 if (feedback == null || feedback == 0) return true; 154 if (feedback == null || feedback == 0) return true;
150 else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null); 155 else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null);
151 }) 156 })
152 // 过滤完成, 收集 157 // 过滤完成, 收集
153 .toList() 158 .toList()
154 .subscribe((data, th) -> { 159 .subscribe((data, th) -> {
155 if (th != null) th.printStackTrace(); 160 if (th != null) th.printStackTrace();
156 if (data != null) { 161 if (data != null) {
157 Collections.sort(data); 162 Collections.sort(data);
158 } 163 }
159 homeworkAdapter.setNewData(data); 164 homeworkAdapter.setNewData(data);
160 }); 165 });
161 } 166 }
162 167
163 private void showSubjectFilter() { 168 private void showSubjectFilter() {
164 if (subjectFilter == null) { 169 if (subjectFilter == null) {
165 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); 170 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater());
166 db.setLifecycleOwner(this); 171 db.setLifecycleOwner(this);
167 db.setState(state); 172 db.setState(state);
168 db.bg.setOnClickListener(v -> subjectFilter.dismiss()); 173 db.bg.setOnClickListener(v -> subjectFilter.dismiss());
169 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 174 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
170 subjectFilter.setOutsideTouchable(true); 175 subjectFilter.setOutsideTouchable(true);
171 subjectFilter.setOnDismissListener(this::getHomework); 176 subjectFilter.setOnDismissListener(this::getHomework);
172 } 177 }
173 subjectFilter.showAsDropDown(binding.anchorView); 178 subjectFilter.showAsDropDown(binding.anchorView);
174 } 179 }
175 180
176 private void showGradeFilter() { 181 private void showGradeFilter() {
177 if (gradeFilter == null) { 182 if (gradeFilter == null) {
178 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); 183 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater());
179 db.setLifecycleOwner(this); 184 db.setLifecycleOwner(this);
180 db.setState(state); 185 db.setState(state);
181 db.bg.setOnClickListener(v -> gradeFilter.dismiss()); 186 db.bg.setOnClickListener(v -> gradeFilter.dismiss());
182 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 187 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
183 gradeFilter.setOutsideTouchable(true); 188 gradeFilter.setOutsideTouchable(true);
184 gradeFilter.setOnDismissListener(this::getHomework); 189 gradeFilter.setOnDismissListener(this::getHomework);
185 } 190 }
186 gradeFilter.showAsDropDown(binding.anchorView); 191 gradeFilter.showAsDropDown(binding.anchorView);
187 } 192 }
188 193
189 private void showTermFilter() { 194 private void showTermFilter() {
190 if (termFilter == null) { 195 if (termFilter == null) {
191 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); 196 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater());
192 db.setLifecycleOwner(this); 197 db.setLifecycleOwner(this);
193 db.setState(state); 198 db.setState(state);
194 db.bg.setOnClickListener(v -> termFilter.dismiss()); 199 db.bg.setOnClickListener(v -> termFilter.dismiss());
195 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 200 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
196 termFilter.setOutsideTouchable(true); 201 termFilter.setOutsideTouchable(true);
197 termFilter.setOnDismissListener(this::getHomework); 202 termFilter.setOnDismissListener(this::getHomework);
198 } 203 }
199 termFilter.showAsDropDown(binding.anchorView); 204 termFilter.showAsDropDown(binding.anchorView);
200 } 205 }
201 206
202 private void showFeedbackFilter() { 207 private void showFeedbackFilter() {
203 if (feedbackFilter == null) { 208 if (feedbackFilter == null) {
204 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); 209 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater());
205 db.setLifecycleOwner(this); 210 db.setLifecycleOwner(this);
206 db.setState(state); 211 db.setState(state);
207 db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); 212 db.bg.setOnClickListener(v -> feedbackFilter.dismiss());
208 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 213 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
209 feedbackFilter.setOutsideTouchable(true); 214 feedbackFilter.setOutsideTouchable(true);
210 feedbackFilter.setOnDismissListener(this::getHomework); 215 feedbackFilter.setOnDismissListener(this::getHomework);
211 } 216 }
212 feedbackFilter.showAsDropDown(binding.anchorView); 217 feedbackFilter.showAsDropDown(binding.anchorView);
213 } 218 }
214 219
215 @Override 220 @Override
216 protected ActivityStudentHomeworkBinding getViewBinding() { 221 protected ActivityStudentHomeworkBinding getViewBinding() {
217 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); 222 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater());
218 } 223 }
219 224
220 public static class State { 225 public static class State {
221 public Student student; 226 public Student student;
222 227
223 public MutableLiveData<String> subject = new MutableLiveData<>(""); 228 public MutableLiveData<String> subject = new MutableLiveData<>("");
224 public void setSubject(String value) { 229 public void setSubject(String value) {
225 subject.setValue(value); 230 subject.setValue(value);
226 } 231 }
227 232
228 public MutableLiveData<String> grade = new MutableLiveData<>(""); 233 public MutableLiveData<String> grade = new MutableLiveData<>("");
229 public void setGrade(String value) { 234 public void setGrade(String value) {
230 grade.setValue(value); 235 grade.setValue(value);
231 } 236 }
232 237
233 public MutableLiveData<String> term = new MutableLiveData<>(""); 238 public MutableLiveData<String> term = new MutableLiveData<>("");
234 public void setTerm(String value) { 239 public void setTerm(String value) {
235 term.setValue(value); 240 term.setValue(value);
236 } 241 }
237 242
238 //0:全部, 1: 已反馈, 2:未反馈 243 //0:全部, 1: 已反馈, 2:未反馈
239 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); 244 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0);
240 public void setFeedback(int value) { 245 public void setFeedback(int value) {
241 feedback.setValue(value); 246 feedback.setValue(value);
242 } 247 }
243 } 248 }
244 } 249 }