Commit a0aac741c4f20b5bb58ec87a82d4255b61df629a
1 parent
06daaf123b
Exists in
master
作业列表刷新
Showing
1 changed file
with
6 additions
and
1 deletions
Show diff stats
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 | } |