Commit b185fa0a902fcd3ba45d22011ce7d00d05f1cbb6

Authored by shixianjie
1 parent 9ec5407bef
Exists in master

empty view

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.view.View; 6 import android.view.View;
7 import android.widget.LinearLayout; 7 import android.widget.LinearLayout;
8 import android.widget.PopupWindow; 8 import android.widget.PopupWindow;
9 9
10 import androidx.annotation.NonNull; 10 import androidx.annotation.NonNull;
11 import androidx.annotation.Nullable; 11 import androidx.annotation.Nullable;
12 import androidx.lifecycle.MutableLiveData; 12 import androidx.lifecycle.MutableLiveData;
13 13
14 import com.chad.library.adapter.base.BaseQuickAdapter; 14 import com.chad.library.adapter.base.BaseQuickAdapter;
15 import com.chad.library.adapter.base.BaseViewHolder; 15 import com.chad.library.adapter.base.BaseViewHolder;
16 import com.google.android.material.tabs.TabLayout; 16 import com.google.android.material.tabs.TabLayout;
17 import com.google.gson.Gson; 17 import com.google.gson.Gson;
18 import com.hjx.parent.adapter.HomeworkListAdapter; 18 import com.hjx.parent.adapter.HomeworkListAdapter;
19 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; 19 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding;
20 import com.hjx.parent.databinding.PopupFilterFeedbackBinding; 20 import com.hjx.parent.databinding.PopupFilterFeedbackBinding;
21 import com.hjx.parent.databinding.PopupFilterGradeBinding; 21 import com.hjx.parent.databinding.PopupFilterGradeBinding;
22 import com.hjx.parent.databinding.PopupFilterSubjectBinding; 22 import com.hjx.parent.databinding.PopupFilterSubjectBinding;
23 import com.hjx.parent.databinding.PopupFilterTermBinding; 23 import com.hjx.parent.databinding.PopupFilterTermBinding;
24 import com.hjx.parent.dialog.MsgConfirmDialog; 24 import com.hjx.parent.dialog.MsgConfirmDialog;
25 import com.hjx.parent.dialog.StageHuyouDialog; 25 import com.hjx.parent.dialog.StageHuyouDialog;
26 import com.hjx.parent.function.Function1; 26 import com.hjx.parent.function.Function1;
27 import com.hjx.parent.rx.BaseRxActivity; 27 import com.hjx.parent.rx.BaseRxActivity;
28 import com.prws.common.bean.ResponseResult; 28 import com.prws.common.bean.ResponseResult;
29 import com.prws.common.bean.Student; 29 import com.prws.common.bean.Student;
30 import com.prws.common.bean.homework.HomeworkList; 30 import com.prws.common.bean.homework.HomeworkList;
31 import com.prws.common.bean.homework.StDetail; 31 import com.prws.common.bean.homework.StDetail;
32 import com.prws.common.net.NetWorks; 32 import com.prws.common.net.NetWorks;
33 import com.prws.common.utils.SharedPreferencesUtil; 33 import com.prws.common.utils.SharedPreferencesUtil;
34 import com.trello.rxlifecycle2.android.RxLifecycleAndroid; 34 import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
35 35
36 import java.text.SimpleDateFormat; 36 import java.text.SimpleDateFormat;
37 import java.util.ArrayList; 37 import java.util.ArrayList;
38 import java.util.Calendar; 38 import java.util.Calendar;
39 import java.util.Collections; 39 import java.util.Collections;
40 import java.util.Date; 40 import java.util.Date;
41 import java.util.HashMap; 41 import java.util.HashMap;
42 import java.util.List; 42 import java.util.List;
43 import java.util.Locale; 43 import java.util.Locale;
44 import java.util.Map; 44 import java.util.Map;
45 45
46 import io.reactivex.Observable; 46 import io.reactivex.Observable;
47 import io.reactivex.android.schedulers.AndroidSchedulers; 47 import io.reactivex.android.schedulers.AndroidSchedulers;
48 import io.reactivex.schedulers.Schedulers; 48 import io.reactivex.schedulers.Schedulers;
49 49
50 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { 50 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> {
51 51
52 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); 52 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter();
53 53
54 private final List<StDetail> mWeekList = new ArrayList<>(); 54 private final List<StDetail> mWeekList = new ArrayList<>();
55 private final List<StDetail> mStageList = new ArrayList<>(); 55 private final List<StDetail> mStageList = new ArrayList<>();
56 private final HuyouAdapter weekAdapter = new HuyouAdapter(mWeekList); 56 private final HuyouAdapter weekAdapter = new HuyouAdapter(mWeekList);
57 private final HuyouAdapter stageAdapter = new HuyouAdapter(mStageList); 57 private final HuyouAdapter stageAdapter = new HuyouAdapter(mStageList);
58 58
59 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; 59 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter;
60 MsgConfirmDialog deleteDialog; 60 MsgConfirmDialog deleteDialog;
61 StageHuyouDialog stageHuyouDialog; 61 StageHuyouDialog stageHuyouDialog;
62 State state = new State(); 62 State state = new State();
63 63
64 private void handlerIntent() { 64 private void handlerIntent() {
65 String json = getIntent().getStringExtra("studentJson"); 65 String json = getIntent().getStringExtra("studentJson");
66 if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); 66 if (json == null) json = (String) SharedPreferencesUtil.getData("student", "");
67 try { state.student = new Gson().fromJson(json, Student.class); } 67 try { state.student = new Gson().fromJson(json, Student.class); }
68 catch (Throwable t) { t.printStackTrace(); } 68 catch (Throwable t) { t.printStackTrace(); }
69 } 69 }
70 70
71 @SuppressLint("SetTextI18n") 71 @SuppressLint("SetTextI18n")
72 @Override 72 @Override
73 public void initView(Bundle savedInstanceState) { 73 public void initView(Bundle savedInstanceState) {
74 handlerIntent(); 74 handlerIntent();
75 if (state.student == null) { 75 if (state.student == null) {
76 finish(); 76 finish();
77 return; 77 return;
78 } 78 }
79 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); 79 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
80 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 80 binding.tvTitle.setText(state.student.stuName + "的全部作业");
81 setupTab(); 81 setupTab();
82 homeworkAdapter.setEmptyView(R.layout.empty_list_homework, binding.recyclerView); 82 homeworkAdapter.setEmptyView(R.layout.empty_list_homework, binding.recyclerView);
83 weekAdapter.setEmptyView(R.layout.empty_huyou_list, binding.recyclerView);
84 stageAdapter.setEmptyView(R.layout.empty_huyou_stage, binding.recyclerView);
83 binding.recyclerView.setAdapter(homeworkAdapter); 85 binding.recyclerView.setAdapter(homeworkAdapter);
84 86
85 deleteDialog = new MsgConfirmDialog.Builder(this) 87 deleteDialog = new MsgConfirmDialog.Builder(this)
86 .setMessage("确认要删除吗?一旦删除不可恢复") 88 .setMessage("确认要删除吗?一旦删除不可恢复")
87 .setPositive("暂不删除") 89 .setPositive("暂不删除")
88 .setNegative("确定删除") 90 .setNegative("确定删除")
89 .build(); 91 .build();
90 92
91 binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); 93 binding.ftSubject.setOnClickListener(v -> showSubjectFilter());
92 binding.ftGrade.setOnClickListener(v -> showGradeFilter()); 94 binding.ftGrade.setOnClickListener(v -> showGradeFilter());
93 binding.ftTerm.setOnClickListener(v -> showTermFilter()); 95 binding.ftTerm.setOnClickListener(v -> showTermFilter());
94 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); 96 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter());
95 homeworkAdapter.deleteCall = data -> { 97 homeworkAdapter.deleteCall = data -> {
96 deleteDialog.show(null, () -> { 98 deleteDialog.show(null, () -> {
97 deleteHomework(data); 99 deleteHomework(data);
98 return true; 100 return true;
99 }); 101 });
100 }; 102 };
101 homeworkAdapter.detailCall = data -> { 103 homeworkAdapter.detailCall = data -> {
102 if (data.getRight() == null) { 104 if (data.getRight() == null) {
103 Intent intent = new Intent(this, HomeworkDetailActivity.class); 105 Intent intent = new Intent(this, HomeworkDetailActivity.class);
104 intent.putExtra("data", data); 106 intent.putExtra("data", data);
105 intent.putExtra("student", state.student); 107 intent.putExtra("student", state.student);
106 startActivity(intent); 108 startActivity(intent);
107 } else { 109 } else {
108 Intent intent = new Intent(this, HomeworkShareActivity.class); 110 Intent intent = new Intent(this, HomeworkShareActivity.class);
109 intent.putExtra("student", state.student); 111 intent.putExtra("student", state.student);
110 intent.putExtra("id", data.getId()); 112 intent.putExtra("id", data.getId());
111 intent.putExtra("grade", data.getGrade()); 113 intent.putExtra("grade", data.getGrade());
112 intent.putExtra("subject", data.getSubject()); 114 intent.putExtra("subject", data.getSubject());
113 String name = new SimpleDateFormat("yyyy年M月d日作业", Locale.CHINA).format(data.uploadTime); 115 String name = new SimpleDateFormat("yyyy年M月d日作业", Locale.CHINA).format(data.uploadTime);
114 intent.putExtra("name", name); 116 intent.putExtra("name", name);
115 startActivity(intent); 117 startActivity(intent);
116 } 118 }
117 }; 119 };
118 120
119 binding.btnChangeStudent.setOnClickListener(v -> { 121 binding.btnChangeStudent.setOnClickListener(v -> {
120 Intent intent = new Intent(this, TeacherChooseActivity.class); 122 Intent intent = new Intent(this, TeacherChooseActivity.class);
121 intent.putExtra("needBack", true); 123 intent.putExtra("needBack", true);
122 startActivityForResult(intent, 0xA01); 124 startActivityForResult(intent, 0xA01);
123 }); 125 });
124 126
125 binding.btnGeneralHuyou.setOnClickListener(v -> generalWeek()); 127 binding.btnGeneralHuyou.setOnClickListener(v -> generalWeek());
126 binding.btnStageHuyou.setOnClickListener(v -> { 128 binding.btnStageHuyou.setOnClickListener(v -> {
127 if (stageHuyouDialog == null) stageHuyouDialog = new StageHuyouDialog(this); 129 if (stageHuyouDialog == null) stageHuyouDialog = new StageHuyouDialog(this);
128 stageHuyouDialog.show(this::generalStage); 130 stageHuyouDialog.show(this::generalStage);
129 }); 131 });
130 132
131 weekAdapter.detailCall = data -> goHuyou(data, 0); 133 weekAdapter.detailCall = data -> goHuyou(data, 0);
132 stageAdapter.detailCall = data -> goHuyou(data, 1); 134 stageAdapter.detailCall = data -> goHuyou(data, 1);
133 weekAdapter.deleteCall = data -> { 135 weekAdapter.deleteCall = data -> {
134 deleteDialog.show(null, () -> { 136 deleteDialog.show(null, () -> {
135 deleteHuyou(data); 137 deleteHuyou(data);
136 return true; 138 return true;
137 }); 139 });
138 }; 140 };
139 stageAdapter.deleteCall = weekAdapter.deleteCall; 141 stageAdapter.deleteCall = weekAdapter.deleteCall;
140 142
141 getWeekHuyou(); 143 getWeekHuyou();
142 getStageHuyou(); 144 getStageHuyou();
143 } 145 }
144 146
145 private void goHuyou(StDetail data, int type) { 147 private void goHuyou(StDetail data, int type) {
146 Intent intent = new Intent(this, HuyouDetailActivity.class); 148 Intent intent = new Intent(this, HuyouDetailActivity.class);
147 intent.putExtra("id", data.id); 149 intent.putExtra("id", data.id);
148 intent.putExtra("type", type); 150 intent.putExtra("type", type);
149 intent.putExtra("student", state.student); 151 intent.putExtra("student", state.student);
150 startActivity(intent); 152 startActivity(intent);
151 } 153 }
152 154
153 @Override 155 @Override
154 protected void onStart() { 156 protected void onStart() {
155 super.onStart(); 157 super.onStart();
156 getHomework(); 158 getHomework();
157 } 159 }
158 160
159 @SuppressLint("SetTextI18n") 161 @SuppressLint("SetTextI18n")
160 @Override 162 @Override
161 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 163 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
162 super.onActivityResult(requestCode, resultCode, data); 164 super.onActivityResult(requestCode, resultCode, data);
163 if (requestCode == 0xA01 && resultCode == RESULT_OK) { 165 if (requestCode == 0xA01 && resultCode == RESULT_OK) {
164 String json = (String) SharedPreferencesUtil.getData("student", ""); 166 String json = (String) SharedPreferencesUtil.getData("student", "");
165 try { 167 try {
166 state.student = new Gson().fromJson(json, Student.class); 168 state.student = new Gson().fromJson(json, Student.class);
167 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 169 binding.tvTitle.setText(state.student.stuName + "的全部作业");
168 getHomework(); 170 getHomework();
169 getWeekHuyou(); 171 getWeekHuyou();
170 getStageHuyou(); 172 getStageHuyou();
171 } 173 }
172 catch (Throwable t) { t.printStackTrace(); } 174 catch (Throwable t) { t.printStackTrace(); }
173 } 175 }
174 } 176 }
175 177
176 private void setupTab() { 178 private void setupTab() {
177 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每日作业")); 179 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每日作业"));
178 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每周总结")); 180 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每周总结"));
179 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("阶段性总结")); 181 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("阶段性总结"));
180 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 182 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
181 @Override 183 @Override
182 public void onTabSelected(TabLayout.Tab tab) { 184 public void onTabSelected(TabLayout.Tab tab) {
183 binding.filterBar.setVisibility(View.GONE); 185 binding.filterBar.setVisibility(View.GONE);
184 binding.weekBar.setVisibility(View.GONE); 186 binding.weekBar.setVisibility(View.GONE);
185 binding.stageBar.setVisibility(View.GONE); 187 binding.stageBar.setVisibility(View.GONE);
186 if (tab.getPosition() == 0) { //每日 188 if (tab.getPosition() == 0) { //每日
187 binding.filterBar.setVisibility(View.VISIBLE); 189 binding.filterBar.setVisibility(View.VISIBLE);
188 binding.recyclerView.setAdapter(homeworkAdapter); 190 binding.recyclerView.setAdapter(homeworkAdapter);
189 } else if (tab.getPosition() == 1) { //每周 191 } else if (tab.getPosition() == 1) { //每周
190 binding.weekBar.setVisibility(View.VISIBLE); 192 binding.weekBar.setVisibility(View.VISIBLE);
191 binding.recyclerView.setAdapter(weekAdapter); 193 binding.recyclerView.setAdapter(weekAdapter);
192 } else if (tab.getPosition() == 2) { //阶段 194 } else if (tab.getPosition() == 2) { //阶段
193 binding.stageBar.setVisibility(View.VISIBLE); 195 binding.stageBar.setVisibility(View.VISIBLE);
194 binding.recyclerView.setAdapter(stageAdapter); 196 binding.recyclerView.setAdapter(stageAdapter);
195 } 197 }
196 } 198 }
197 @Override 199 @Override
198 public void onTabUnselected(TabLayout.Tab tab) { 200 public void onTabUnselected(TabLayout.Tab tab) {
199 } 201 }
200 @Override 202 @Override
201 public void onTabReselected(TabLayout.Tab tab) { 203 public void onTabReselected(TabLayout.Tab tab) {
202 } 204 }
203 }); 205 });
204 } 206 }
205 207
206 @SuppressLint("CheckResult") 208 @SuppressLint("CheckResult")
207 protected void deleteHomework(HomeworkList data) { 209 protected void deleteHomework(HomeworkList data) {
208 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId()) 210 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId())
209 .subscribeOn(Schedulers.io()) 211 .subscribeOn(Schedulers.io())
210 .observeOn(AndroidSchedulers.mainThread()) 212 .observeOn(AndroidSchedulers.mainThread())
211 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 213 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
212 .subscribe((response, th) -> { 214 .subscribe((response, th) -> {
213 if (th != null) th.printStackTrace(); 215 if (th != null) th.printStackTrace();
214 if (response != null && response.getSuccess()) { 216 if (response != null && response.getSuccess()) {
215 getHomework(); 217 getHomework();
216 } 218 }
217 }); 219 });
218 220
219 } 221 }
220 222
221 @SuppressLint("CheckResult") 223 @SuppressLint("CheckResult")
222 protected void getHomework() { 224 protected void getHomework() {
223 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) 225 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId)
224 .subscribeOn(Schedulers.io()) 226 .subscribeOn(Schedulers.io())
225 .observeOn(AndroidSchedulers.mainThread()) 227 .observeOn(AndroidSchedulers.mainThread())
226 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 228 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
227 .toObservable() 229 .toObservable()
228 .concatMap(response -> Observable.fromIterable(response.getData())) 230 .concatMap(response -> Observable.fromIterable(response.getData()))
229 // 过滤 231 // 过滤
230 .filter(data -> { // 学科 232 .filter(data -> { // 学科
231 String subject = state.subject.getValue(); 233 String subject = state.subject.getValue();
232 if (subject == null || subject.isEmpty()) return true; 234 if (subject == null || subject.isEmpty()) return true;
233 else return subject.equals(data.getSubject()); 235 else return subject.equals(data.getSubject());
234 }) 236 })
235 .filter(data -> { // 年级 237 .filter(data -> { // 年级
236 String grade = state.grade.getValue(); 238 String grade = state.grade.getValue();
237 if (grade == null || grade.isEmpty()) return true; 239 if (grade == null || grade.isEmpty()) return true;
238 else return grade.equals(data.getGrade()); 240 else return grade.equals(data.getGrade());
239 }) 241 })
240 .filter(data -> { // 学期 242 .filter(data -> { // 学期
241 String term = state.term.getValue(); 243 String term = state.term.getValue();
242 if (term == null || term.isEmpty()) return true; 244 if (term == null || term.isEmpty()) return true;
243 else return term.equals(data.getTerm()); 245 else return term.equals(data.getTerm());
244 }) 246 })
245 .filter(data -> { // 反馈 247 .filter(data -> { // 反馈
246 Integer feedback = state.feedback.getValue(); 248 Integer feedback = state.feedback.getValue();
247 if (feedback == null || feedback == 0) return true; 249 if (feedback == null || feedback == 0) return true;
248 else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null); 250 else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null);
249 }) 251 })
250 // 过滤完成, 收集 252 // 过滤完成, 收集
251 .toList() 253 .toList()
252 .subscribe((data, th) -> { 254 .subscribe((data, th) -> {
253 if (th != null) th.printStackTrace(); 255 if (th != null) th.printStackTrace();
254 if (data != null) { 256 if (data != null) {
255 Collections.sort(data); 257 Collections.sort(data);
256 } 258 }
257 homeworkAdapter.setNewData(data); 259 homeworkAdapter.setNewData(data);
258 }); 260 });
259 } 261 }
260 262
261 @SuppressLint({"CheckResult", "NotifyDataSetChanged"}) 263 @SuppressLint({"CheckResult", "NotifyDataSetChanged"})
262 private void getWeekHuyou() { 264 private void getWeekHuyou() {
263 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 0) 265 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 0)
264 .compose(transformSingle()) 266 .compose(transformSingle())
265 .map(ResponseResult::getData) 267 .map(ResponseResult::getData)
266 .subscribe((list, throwable) -> { 268 .subscribe((list, throwable) -> {
267 if (throwable != null) { 269 if (throwable != null) {
268 throwable.printStackTrace(); 270 throwable.printStackTrace();
269 return; 271 return;
270 } 272 }
271 if (list != null) { 273 if (list != null) {
272 mWeekList.clear(); 274 mWeekList.clear();
273 mWeekList.addAll(list); 275 mWeekList.addAll(list);
274 weekAdapter.notifyDataSetChanged(); 276 weekAdapter.notifyDataSetChanged();
275 277
276 boolean exist = false; 278 boolean exist = false;
277 int thisWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR); 279 int thisWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
278 for (StDetail bean: mWeekList) { 280 for (StDetail bean: mWeekList) {
279 Calendar other = Calendar.getInstance(); 281 Calendar other = Calendar.getInstance();
280 other.setTime(bean.endTime); 282 other.setTime(bean.endTime);
281 if (other.get(Calendar.WEEK_OF_YEAR) == thisWeek) { 283 if (other.get(Calendar.WEEK_OF_YEAR) == thisWeek) {
282 exist = true; 284 exist = true;
283 break; 285 break;
284 } 286 }
285 } 287 }
286 binding.btnGeneralHuyou.setVisibility(exist ? View.GONE : View.VISIBLE); 288 binding.btnGeneralHuyou.setVisibility(exist ? View.GONE : View.VISIBLE);
287 } 289 }
288 }); 290 });
289 } 291 }
290 292
291 @SuppressLint({"CheckResult", "NotifyDataSetChanged"}) 293 @SuppressLint({"CheckResult", "NotifyDataSetChanged"})
292 private void getStageHuyou() { 294 private void getStageHuyou() {
293 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 1) 295 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 1)
294 .compose(transformSingle()) 296 .compose(transformSingle())
295 .map(ResponseResult::getData) 297 .map(ResponseResult::getData)
296 .subscribe((list, throwable) -> { 298 .subscribe((list, throwable) -> {
297 if (throwable != null) { 299 if (throwable != null) {
298 throwable.printStackTrace(); 300 throwable.printStackTrace();
299 return; 301 return;
300 } 302 }
301 if (list != null) { 303 if (list != null) {
302 mStageList.clear(); 304 mStageList.clear();
303 mStageList.addAll(list); 305 mStageList.addAll(list);
304 stageAdapter.notifyDataSetChanged(); 306 stageAdapter.notifyDataSetChanged();
305 } 307 }
306 }); 308 });
307 } 309 }
308 310
309 @SuppressLint("CheckResult") 311 @SuppressLint("CheckResult")
310 private void generalWeek() { 312 private void generalWeek() {
311 showLoadingDialog("稍等..."); 313 showLoadingDialog("稍等...");
312 NetWorks.service_url.generalHuyou() 314 NetWorks.service_url.generalHuyou()
313 .compose(transformSingle()) 315 .compose(transformSingle())
314 .subscribe((response, throwable) -> { 316 .subscribe((response, throwable) -> {
315 cancelLoadingDialog(); 317 cancelLoadingDialog();
316 if (throwable != null) { 318 if (throwable != null) {
317 loadFail("失败"); 319 loadFail("失败");
318 throwable.printStackTrace(); 320 throwable.printStackTrace();
319 return; 321 return;
320 } 322 }
321 if (response != null && response.getSuccess()) { 323 if (response != null && response.getSuccess()) {
322 binding.btnGeneralHuyou.setVisibility(View.GONE); 324 binding.btnGeneralHuyou.setVisibility(View.GONE);
323 getWeekHuyou(); 325 getWeekHuyou();
324 } 326 }
325 }); 327 });
326 } 328 }
327 329
328 @SuppressLint("CheckResult") 330 @SuppressLint("CheckResult")
329 private void generalStage(Date startDate, Date endDate, String subject) { 331 private void generalStage(Date startDate, Date endDate, String subject) {
330 SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss", Locale.CHINA); 332 SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss", Locale.CHINA);
331 Map<String, Object> body = new HashMap<>(); 333 Map<String, Object> body = new HashMap<>();
332 body.put("stuId", state.student.stuId); 334 body.put("stuId", state.student.stuId);
333 body.put("startTime", format.format(startDate)); 335 body.put("startTime", format.format(startDate));
334 body.put("endTime", format.format(endDate)); 336 body.put("endTime", format.format(endDate));
335 body.put("subject", subject); 337 body.put("subject", subject);
336 showLoadingDialog("稍等..."); 338 showLoadingDialog("稍等...");
337 NetWorks.service_url.generalStageHuyou(NetWorks.getHeader(), body) 339 NetWorks.service_url.generalStageHuyou(NetWorks.getHeader(), body)
338 .subscribeOn(Schedulers.io()) 340 .subscribeOn(Schedulers.io())
339 .observeOn(AndroidSchedulers.mainThread()) 341 .observeOn(AndroidSchedulers.mainThread())
340 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 342 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
341 .subscribe((response, throwable) -> { 343 .subscribe((response, throwable) -> {
342 if (throwable != null) { 344 if (throwable != null) {
343 loadFail("失败"); 345 loadFail("失败");
344 throwable.printStackTrace(); 346 throwable.printStackTrace();
345 return; 347 return;
346 } 348 }
347 if (response.getSuccess()) { 349 if (response.getSuccess()) {
348 getStageHuyou(); 350 getStageHuyou();
349 cancelLoadingDialog(); 351 cancelLoadingDialog();
350 } else { 352 } else {
351 loadFail(response.getMsg()); 353 loadFail(response.getMsg());
352 } 354 }
353 }); 355 });
354 } 356 }
355 357
356 @SuppressLint("CheckResult") 358 @SuppressLint("CheckResult")
357 private void deleteHuyou(StDetail detail) { 359 private void deleteHuyou(StDetail detail) {
358 showLoadingDialog("稍等..."); 360 showLoadingDialog("稍等...");
359 NetWorks.service_url.deleteHuyou(NetWorks.getHeader(), detail.id) 361 NetWorks.service_url.deleteHuyou(NetWorks.getHeader(), detail.id)
360 .subscribeOn(Schedulers.io()) 362 .subscribeOn(Schedulers.io())
361 .observeOn(AndroidSchedulers.mainThread()) 363 .observeOn(AndroidSchedulers.mainThread())
362 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 364 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
363 .subscribe((response, throwable) -> { 365 .subscribe((response, throwable) -> {
364 cancelLoadingDialog(); 366 cancelLoadingDialog();
365 if (throwable != null) { 367 if (throwable != null) {
366 loadFail("失败"); 368 loadFail("失败");
367 throwable.printStackTrace(); 369 throwable.printStackTrace();
368 return; 370 return;
369 } 371 }
370 if (detail.type == 0) { 372 if (detail.type == 0) {
371 getWeekHuyou(); 373 getWeekHuyou();
372 } else { 374 } else {
373 getStageHuyou(); 375 getStageHuyou();
374 } 376 }
375 }); 377 });
376 } 378 }
377 379
378 private void showSubjectFilter() { 380 private void showSubjectFilter() {
379 if (subjectFilter == null) { 381 if (subjectFilter == null) {
380 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); 382 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater());
381 db.setLifecycleOwner(this); 383 db.setLifecycleOwner(this);
382 db.setState(state); 384 db.setState(state);
383 db.bg.setOnClickListener(v -> subjectFilter.dismiss()); 385 db.bg.setOnClickListener(v -> subjectFilter.dismiss());
384 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 386 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
385 subjectFilter.setOutsideTouchable(true); 387 subjectFilter.setOutsideTouchable(true);
386 } 388 }
387 subjectFilter.showAsDropDown(binding.anchorView); 389 subjectFilter.showAsDropDown(binding.anchorView);
388 state.onFilter = i -> { 390 state.onFilter = i -> {
389 subjectFilter.dismiss(); 391 subjectFilter.dismiss();
390 String subject = state.subject.getValue(); 392 String subject = state.subject.getValue();
391 binding.ftSubject.setActivated(subject != null && !subject.isEmpty()); 393 binding.ftSubject.setActivated(subject != null && !subject.isEmpty());
392 binding.ftSubject.setText(subject == null || subject.isEmpty() ? "学科" : subject); 394 binding.ftSubject.setText(subject == null || subject.isEmpty() ? "学科" : subject);
393 getHomework(); 395 getHomework();
394 }; 396 };
395 } 397 }
396 398
397 private void showGradeFilter() { 399 private void showGradeFilter() {
398 if (gradeFilter == null) { 400 if (gradeFilter == null) {
399 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); 401 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater());
400 db.setLifecycleOwner(this); 402 db.setLifecycleOwner(this);
401 db.setState(state); 403 db.setState(state);
402 db.bg.setOnClickListener(v -> gradeFilter.dismiss()); 404 db.bg.setOnClickListener(v -> gradeFilter.dismiss());
403 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 405 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
404 gradeFilter.setOutsideTouchable(true); 406 gradeFilter.setOutsideTouchable(true);
405 } 407 }
406 gradeFilter.showAsDropDown(binding.anchorView); 408 gradeFilter.showAsDropDown(binding.anchorView);
407 state.onFilter = i -> { 409 state.onFilter = i -> {
408 gradeFilter.dismiss(); 410 gradeFilter.dismiss();
409 String grade = state.grade.getValue(); 411 String grade = state.grade.getValue();
410 binding.ftGrade.setActivated(grade != null && !grade.isEmpty()); 412 binding.ftGrade.setActivated(grade != null && !grade.isEmpty());
411 binding.ftGrade.setText(grade == null || grade.isEmpty() ? "年级" : grade); 413 binding.ftGrade.setText(grade == null || grade.isEmpty() ? "年级" : grade);
412 414
413 getHomework(); 415 getHomework();
414 }; 416 };
415 } 417 }
416 418
417 private void showTermFilter() { 419 private void showTermFilter() {
418 if (termFilter == null) { 420 if (termFilter == null) {
419 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); 421 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater());
420 db.setLifecycleOwner(this); 422 db.setLifecycleOwner(this);
421 db.setState(state); 423 db.setState(state);
422 db.bg.setOnClickListener(v -> termFilter.dismiss()); 424 db.bg.setOnClickListener(v -> termFilter.dismiss());
423 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 425 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
424 termFilter.setOutsideTouchable(true); 426 termFilter.setOutsideTouchable(true);
425 } 427 }
426 termFilter.showAsDropDown(binding.anchorView); 428 termFilter.showAsDropDown(binding.anchorView);
427 state.onFilter = i -> { 429 state.onFilter = i -> {
428 termFilter.dismiss(); 430 termFilter.dismiss();
429 String term = state.term.getValue(); 431 String term = state.term.getValue();
430 binding.ftTerm.setActivated(term != null && !term.isEmpty()); 432 binding.ftTerm.setActivated(term != null && !term.isEmpty());
431 binding.ftTerm.setText(term == null || term.isEmpty() ? "学期" : term); 433 binding.ftTerm.setText(term == null || term.isEmpty() ? "学期" : term);
432 434
433 getHomework(); 435 getHomework();
434 }; 436 };
435 } 437 }
436 438
437 private void showFeedbackFilter() { 439 private void showFeedbackFilter() {
438 if (feedbackFilter == null) { 440 if (feedbackFilter == null) {
439 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); 441 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater());
440 db.setLifecycleOwner(this); 442 db.setLifecycleOwner(this);
441 db.setState(state); 443 db.setState(state);
442 db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); 444 db.bg.setOnClickListener(v -> feedbackFilter.dismiss());
443 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 445 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
444 feedbackFilter.setOutsideTouchable(true); 446 feedbackFilter.setOutsideTouchable(true);
445 } 447 }
446 feedbackFilter.showAsDropDown(binding.anchorView); 448 feedbackFilter.showAsDropDown(binding.anchorView);
447 state.onFilter = i -> { 449 state.onFilter = i -> {
448 feedbackFilter.dismiss(); 450 feedbackFilter.dismiss();
449 int feedback = state.feedback.getValue().intValue(); 451 int feedback = state.feedback.getValue().intValue();
450 binding.ftFeedback.setActivated(feedback != 0); 452 binding.ftFeedback.setActivated(feedback != 0);
451 binding.ftFeedback.setText(feedback == 0 ? "反馈状态" : feedback == 1 ? "已反馈" : "未反馈"); 453 binding.ftFeedback.setText(feedback == 0 ? "反馈状态" : feedback == 1 ? "已反馈" : "未反馈");
452 454
453 getHomework(); 455 getHomework();
454 }; 456 };
455 } 457 }
456 458
457 @Override 459 @Override
458 protected ActivityStudentHomeworkBinding getViewBinding() { 460 protected ActivityStudentHomeworkBinding getViewBinding() {
459 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); 461 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater());
460 } 462 }
461 463
462 public static class State { 464 public static class State {
463 public Student student; 465 public Student student;
464 466
465 public Function1<Integer> onFilter = i -> { }; 467 public Function1<Integer> onFilter = i -> { };
466 468
467 public MutableLiveData<String> subject = new MutableLiveData<>(""); 469 public MutableLiveData<String> subject = new MutableLiveData<>("");
468 public void setSubject(String value) { 470 public void setSubject(String value) {
469 subject.setValue(value); 471 subject.setValue(value);
470 onFilter.invoke(1); 472 onFilter.invoke(1);
471 } 473 }
472 474
473 public MutableLiveData<String> grade = new MutableLiveData<>(""); 475 public MutableLiveData<String> grade = new MutableLiveData<>("");
474 public void setGrade(String value) { 476 public void setGrade(String value) {
475 grade.setValue(value); 477 grade.setValue(value);
476 onFilter.invoke(2); 478 onFilter.invoke(2);
477 } 479 }
478 480
479 public MutableLiveData<String> term = new MutableLiveData<>(""); 481 public MutableLiveData<String> term = new MutableLiveData<>("");
480 public void setTerm(String value) { 482 public void setTerm(String value) {
481 term.setValue(value); 483 term.setValue(value);
482 onFilter.invoke(3); 484 onFilter.invoke(3);
483 } 485 }
484 486
485 //0:全部, 1: 已反馈, 2:未反馈 487 //0:全部, 1: 已反馈, 2:未反馈
486 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); 488 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0);
487 public void setFeedback(int value) { 489 public void setFeedback(int value) {
488 feedback.setValue(value); 490 feedback.setValue(value);
489 onFilter.invoke(4); 491 onFilter.invoke(4);
490 } 492 }
491 } 493 }
492 494
493 static class HuyouAdapter extends BaseQuickAdapter<StDetail, BaseViewHolder> { 495 static class HuyouAdapter extends BaseQuickAdapter<StDetail, BaseViewHolder> {
494 public Function1<StDetail> deleteCall; 496 public Function1<StDetail> deleteCall;
495 public Function1<StDetail> detailCall; 497 public Function1<StDetail> detailCall;
496 public Student student; 498 public Student student;
497 499
498 public HuyouAdapter(@Nullable List<StDetail> data) { 500 public HuyouAdapter(@Nullable List<StDetail> data) {
499 super(R.layout.item_homework_list, data); 501 super(R.layout.item_homework_list, data);
500 } 502 }
501 503
502 @SuppressLint("SetTextI18n,SimpleDateFormat") 504 @SuppressLint("SetTextI18n,SimpleDateFormat")
503 @Override 505 @Override
504 protected void convert(@NonNull BaseViewHolder holder, StDetail data) { 506 protected void convert(@NonNull BaseViewHolder holder, StDetail data) {
505 holder.setGone(R.id.tvFlag, false); 507 holder.setGone(R.id.tvFlag, false);
506 int subjectImg; 508 int subjectImg;
507 switch (data.homeworkSubject) { 509 switch (data.homeworkSubject) {
508 case "语文": 510 case "语文":
509 subjectImg = R.drawable.ic_chinese; 511 subjectImg = R.drawable.ic_chinese;
510 break; 512 break;
511 case "英语": 513 case "英语":
512 subjectImg = R.drawable.ic_english; 514 subjectImg = R.drawable.ic_english;
513 break; 515 break;
514 case "物理": 516 case "物理":
515 subjectImg = R.drawable.ic_physics; 517 subjectImg = R.drawable.ic_physics;
516 break; 518 break;
517 case "化学": 519 case "化学":
518 subjectImg = R.drawable.ic_chemistry; 520 subjectImg = R.drawable.ic_chemistry;
519 break; 521 break;
520 case "数学": 522 case "数学":
521 default: 523 default:
522 subjectImg = R.drawable.ic_math; 524 subjectImg = R.drawable.ic_math;
523 } 525 }
524 holder.setImageResource(R.id.ivSubject, subjectImg); 526 holder.setImageResource(R.id.ivSubject, subjectImg);
525 Date endDate = new Date(data.endTime.getTime() - 1000); 527 Date endDate = new Date(data.endTime.getTime() - 1000);
526 String startStr = new SimpleDateFormat("yyyy.M.d").format(data.startTime); 528 String startStr = new SimpleDateFormat("yyyy.M.d").format(data.startTime);
527 String endStr = new SimpleDateFormat("-M.d").format(endDate); 529 String endStr = new SimpleDateFormat("-M.d").format(endDate);
528 String typeStr = data.type == 0 ? "作业周总结" : "作业阶段性总结"; 530 String typeStr = data.type == 0 ? "作业周总结" : "作业阶段性总结";
529 String title = startStr + endStr + data.homeworkSubject + typeStr; 531 String title = startStr + endStr + data.homeworkSubject + typeStr;
530 holder.setText(R.id.tvName, title); 532 holder.setText(R.id.tvName, title);
531 holder.setText(R.id.tvGrade, data.grade); 533 holder.setText(R.id.tvGrade, data.grade);
532 View btnDelete = holder.getView(R.id.btnDelete); 534 View btnDelete = holder.getView(R.id.btnDelete);
533 View btnDetail = holder.getView(R.id.btnDetail); 535 View btnDetail = holder.getView(R.id.btnDetail);
534 btnDelete.setOnClickListener(v -> { 536 btnDelete.setOnClickListener(v -> {
535 if (deleteCall != null) deleteCall.invoke(data); 537 if (deleteCall != null) deleteCall.invoke(data);
536 }); 538 });
537 btnDetail.setOnClickListener(v -> { 539 btnDetail.setOnClickListener(v -> {
538 if (detailCall != null) detailCall.invoke(data); 540 if (detailCall != null) detailCall.invoke(data);
539 }); 541 });
540 } 542 }
541 543
542 private SimpleDateFormat getFormatWithGmt8(String pattern) { 544 private SimpleDateFormat getFormatWithGmt8(String pattern) {
543 SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA); 545 SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA);
544 //format.setTimeZone(TimeZone.getTimeZone("GMT+16")); 546 //format.setTimeZone(TimeZone.getTimeZone("GMT+16"));
545 return format; 547 return format;
546 } 548 }
547 } 549 }
548 550
549 } 551 }
550 552
app/src/main/res/drawable/png_empty_huyou_list.png

72.6 KB

app/src/main/res/layout/empty_huyou_list.xml
File was created 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:orientation="vertical"
5 android:gravity="center"
6 android:paddingVertical="40dp"
7 android:layout_width="match_parent"
8 android:layout_height="wrap_content">
9
10 <ImageView
11 android:src="@drawable/png_empty_huyou_list"
12 android:layout_width="104dp"
13 android:layout_height="104dp"/>
14
15 <TextView
16 android:text="暂无周作业总结"
17 android:textSize="14sp"
18 android:textColor="#999"
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"/>
21
22 </LinearLayout>
app/src/main/res/layout/empty_huyou_stage.xml
File was created 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:orientation="vertical"
5 android:gravity="center"
6 android:paddingVertical="40dp"
7 android:layout_width="match_parent"
8 android:layout_height="wrap_content">
9
10 <ImageView
11 android:src="@drawable/png_empty_huyou_list"
12 android:layout_width="104dp"
13 android:layout_height="104dp"/>
14
15 <TextView
16 android:text="暂无阶段性作业总结"
17 android:textSize="14sp"
18 android:textColor="#999"
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"/>
21
22 </LinearLayout>