Commit b4bc21d212dc7dc3b13dd7cc7545dcc43f5a889e

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