Commit ae79188a189d4dd3f869d52c08b78dde7c575fe7

Authored by shixianjie
1 parent 4aaa2170c0
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 homeworkAdapter.setEmptyView(R.layout.empty_list_homework, binding.recyclerView);
83 weekAdapter.setEmptyView(R.layout.empty_huyou_list, binding.recyclerView); 83 weekAdapter.setEmptyView(R.layout.empty_huyou_list, binding.recyclerView);
84 stageAdapter.setEmptyView(R.layout.empty_huyou_stage, binding.recyclerView); 84 stageAdapter.setEmptyView(R.layout.empty_huyou_stage, binding.recyclerView);
85 binding.recyclerView.setAdapter(homeworkAdapter); 85 binding.recyclerView.setAdapter(homeworkAdapter);
86 86
87 deleteDialog = new MsgConfirmDialog.Builder(this) 87 deleteDialog = new MsgConfirmDialog.Builder(this)
88 .setMessage("确认要删除吗?一旦删除不可恢复") 88 .setMessage("确认要删除吗?一旦删除不可恢复")
89 .setPositive("暂不删除") 89 .setPositive("暂不删除")
90 .setNegative("确定删除") 90 .setNegative("确定删除")
91 .build(); 91 .build();
92 92
93 binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); 93 binding.ftSubject.setOnClickListener(v -> showSubjectFilter());
94 binding.ftGrade.setOnClickListener(v -> showGradeFilter()); 94 binding.ftGrade.setOnClickListener(v -> showGradeFilter());
95 binding.ftTerm.setOnClickListener(v -> showTermFilter()); 95 binding.ftTerm.setOnClickListener(v -> showTermFilter());
96 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); 96 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter());
97 homeworkAdapter.deleteCall = data -> { 97 homeworkAdapter.deleteCall = data -> {
98 deleteDialog.show(null, () -> { 98 deleteDialog.show(null, () -> {
99 deleteHomework(data); 99 deleteHomework(data);
100 return true; 100 return true;
101 }); 101 });
102 }; 102 };
103 homeworkAdapter.detailCall = data -> { 103 homeworkAdapter.detailCall = data -> {
104 if (data.getRight() == null) { 104 if (data.getRight() == null) {
105 Intent intent = new Intent(this, HomeworkDetailActivity.class); 105 Intent intent = new Intent(this, HomeworkDetailActivity.class);
106 intent.putExtra("data", data); 106 intent.putExtra("data", data);
107 intent.putExtra("student", state.student); 107 intent.putExtra("student", state.student);
108 startActivity(intent); 108 startActivity(intent);
109 } else { 109 } else {
110 Intent intent = new Intent(this, HomeworkShareActivity.class); 110 Intent intent = new Intent(this, HomeworkShareActivity.class);
111 intent.putExtra("student", state.student); 111 intent.putExtra("student", state.student);
112 intent.putExtra("id", data.getId()); 112 intent.putExtra("id", data.getId());
113 intent.putExtra("grade", data.getGrade()); 113 intent.putExtra("grade", data.getGrade());
114 intent.putExtra("subject", data.getSubject()); 114 intent.putExtra("subject", data.getSubject());
115 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);
116 intent.putExtra("name", name); 116 intent.putExtra("name", name);
117 startActivity(intent); 117 startActivity(intent);
118 } 118 }
119 }; 119 };
120 120
121 binding.btnChangeStudent.setOnClickListener(v -> { 121 binding.btnChangeStudent.setOnClickListener(v -> {
122 Intent intent = new Intent(this, TeacherChooseActivity.class); 122 Intent intent = new Intent(this, TeacherChooseActivity.class);
123 intent.putExtra("needBack", true); 123 intent.putExtra("needBack", true);
124 startActivityForResult(intent, 0xA01); 124 startActivityForResult(intent, 0xA01);
125 }); 125 });
126 126
127 binding.btnGeneralHuyou.setOnClickListener(v -> generalWeek()); 127 binding.btnGeneralHuyou.setOnClickListener(v -> generalWeek());
128 binding.btnStageHuyou.setOnClickListener(v -> { 128 binding.btnStageHuyou.setOnClickListener(v -> {
129 if (stageHuyouDialog == null) stageHuyouDialog = new StageHuyouDialog(this); 129 if (stageHuyouDialog == null) stageHuyouDialog = new StageHuyouDialog(this);
130 stageHuyouDialog.show(this::generalStage); 130 stageHuyouDialog.show(this::generalStage);
131 }); 131 });
132 132
133 weekAdapter.detailCall = data -> goHuyou(data, 0); 133 weekAdapter.detailCall = data -> goHuyou(data, 0);
134 stageAdapter.detailCall = data -> goHuyou(data, 1); 134 stageAdapter.detailCall = data -> goHuyou(data, 1);
135 weekAdapter.deleteCall = data -> { 135 weekAdapter.deleteCall = data -> {
136 deleteDialog.show(null, () -> { 136 deleteDialog.show(null, () -> {
137 deleteHuyou(data); 137 deleteHuyou(data);
138 return true; 138 return true;
139 }); 139 });
140 }; 140 };
141 stageAdapter.deleteCall = weekAdapter.deleteCall; 141 stageAdapter.deleteCall = weekAdapter.deleteCall;
142 142
143 getWeekHuyou(); 143 getWeekHuyou();
144 getStageHuyou(); 144 getStageHuyou();
145 } 145 }
146 146
147 private void goHuyou(StDetail data, int type) { 147 private void goHuyou(StDetail data, int type) {
148 Intent intent = new Intent(this, HuyouDetailActivity.class); 148 Intent intent = new Intent(this, HuyouDetailActivity.class);
149 intent.putExtra("id", data.id); 149 intent.putExtra("id", data.id);
150 intent.putExtra("type", type); 150 intent.putExtra("type", type);
151 intent.putExtra("student", state.student); 151 intent.putExtra("student", state.student);
152 startActivity(intent); 152 startActivity(intent);
153 } 153 }
154 154
155 @Override 155 @Override
156 protected void onStart() { 156 protected void onStart() {
157 super.onStart(); 157 super.onStart();
158 getHomework(); 158 getHomework();
159 } 159 }
160 160
161 @SuppressLint("SetTextI18n") 161 @SuppressLint("SetTextI18n")
162 @Override 162 @Override
163 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 163 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
164 super.onActivityResult(requestCode, resultCode, data); 164 super.onActivityResult(requestCode, resultCode, data);
165 if (requestCode == 0xA01 && resultCode == RESULT_OK) { 165 if (requestCode == 0xA01 && resultCode == RESULT_OK) {
166 String json = (String) SharedPreferencesUtil.getData("student", ""); 166 String json = (String) SharedPreferencesUtil.getData("student", "");
167 try { 167 try {
168 state.student = new Gson().fromJson(json, Student.class); 168 state.student = new Gson().fromJson(json, Student.class);
169 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 169 binding.tvTitle.setText(state.student.stuName + "的全部作业");
170 getHomework(); 170 getHomework();
171 getWeekHuyou(); 171 getWeekHuyou();
172 getStageHuyou(); 172 getStageHuyou();
173 } 173 }
174 catch (Throwable t) { t.printStackTrace(); } 174 catch (Throwable t) { t.printStackTrace(); }
175 } 175 }
176 } 176 }
177 177
178 private void setupTab() { 178 private void setupTab() {
179 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每日作业")); 179 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每日作业"));
180 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每周总结")); 180 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每周总结"));
181 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("阶段性总结")); 181 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("阶段性总结"));
182 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 182 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
183 @Override 183 @Override
184 public void onTabSelected(TabLayout.Tab tab) { 184 public void onTabSelected(TabLayout.Tab tab) {
185 binding.filterBar.setVisibility(View.GONE); 185 binding.filterBar.setVisibility(View.GONE);
186 binding.weekBar.setVisibility(View.GONE); 186 binding.weekBar.setVisibility(View.GONE);
187 binding.stageBar.setVisibility(View.GONE); 187 binding.stageBar.setVisibility(View.GONE);
188 if (tab.getPosition() == 0) { //每日 188 if (tab.getPosition() == 0) { //每日
189 binding.filterBar.setVisibility(View.VISIBLE); 189 binding.filterBar.setVisibility(View.VISIBLE);
190 binding.recyclerView.setAdapter(homeworkAdapter); 190 binding.recyclerView.setAdapter(homeworkAdapter);
191 } else if (tab.getPosition() == 1) { //每周 191 } else if (tab.getPosition() == 1) { //每周
192 binding.weekBar.setVisibility(View.VISIBLE); 192 binding.weekBar.setVisibility(View.VISIBLE);
193 binding.recyclerView.setAdapter(weekAdapter); 193 binding.recyclerView.setAdapter(weekAdapter);
194 } else if (tab.getPosition() == 2) { //阶段 194 } else if (tab.getPosition() == 2) { //阶段
195 binding.stageBar.setVisibility(View.VISIBLE); 195 binding.stageBar.setVisibility(View.VISIBLE);
196 binding.recyclerView.setAdapter(stageAdapter); 196 binding.recyclerView.setAdapter(stageAdapter);
197 } 197 }
198 } 198 }
199 @Override 199 @Override
200 public void onTabUnselected(TabLayout.Tab tab) { 200 public void onTabUnselected(TabLayout.Tab tab) {
201 } 201 }
202 @Override 202 @Override
203 public void onTabReselected(TabLayout.Tab tab) { 203 public void onTabReselected(TabLayout.Tab tab) {
204 } 204 }
205 }); 205 });
206 } 206 }
207 207
208 @SuppressLint("CheckResult") 208 @SuppressLint("CheckResult")
209 protected void deleteHomework(HomeworkList data) { 209 protected void deleteHomework(HomeworkList data) {
210 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId()) 210 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId())
211 .subscribeOn(Schedulers.io()) 211 .subscribeOn(Schedulers.io())
212 .observeOn(AndroidSchedulers.mainThread()) 212 .observeOn(AndroidSchedulers.mainThread())
213 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 213 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
214 .subscribe((response, th) -> { 214 .subscribe((response, th) -> {
215 if (th != null) th.printStackTrace(); 215 if (th != null) th.printStackTrace();
216 if (response != null && response.getSuccess()) { 216 if (response != null && response.getSuccess()) {
217 getHomework(); 217 getHomework();
218 } 218 }
219 }); 219 });
220 220
221 } 221 }
222 222
223 @SuppressLint("CheckResult") 223 @SuppressLint("CheckResult")
224 protected void getHomework() { 224 protected void getHomework() {
225 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) 225 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId)
226 .subscribeOn(Schedulers.io()) 226 .subscribeOn(Schedulers.io())
227 .observeOn(AndroidSchedulers.mainThread()) 227 .observeOn(AndroidSchedulers.mainThread())
228 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 228 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
229 .toObservable() 229 .toObservable()
230 .concatMap(response -> Observable.fromIterable(response.getData())) 230 .concatMap(response -> Observable.fromIterable(response.getData()))
231 // 过滤 231 // 过滤
232 .filter(data -> { // 学科 232 .filter(data -> { // 学科
233 String subject = state.subject.getValue(); 233 String subject = state.subject.getValue();
234 if (subject == null || subject.isEmpty()) return true; 234 if (subject == null || subject.isEmpty()) return true;
235 else return subject.equals(data.getSubject()); 235 else return subject.equals(data.getSubject());
236 }) 236 })
237 .filter(data -> { // 年级 237 .filter(data -> { // 年级
238 String grade = state.grade.getValue(); 238 String grade = state.grade.getValue();
239 if (grade == null || grade.isEmpty()) return true; 239 if (grade == null || grade.isEmpty()) return true;
240 else return grade.equals(data.getGrade()); 240 else return grade.equals(data.getGrade());
241 }) 241 })
242 .filter(data -> { // 学期 242 .filter(data -> { // 学期
243 String term = state.term.getValue(); 243 String term = state.term.getValue();
244 if (term == null || term.isEmpty()) return true; 244 if (term == null || term.isEmpty()) return true;
245 else return term.equals(data.getTerm()); 245 else return term.equals(data.getTerm());
246 }) 246 })
247 .filter(data -> { // 反馈 247 .filter(data -> { // 反馈
248 Integer feedback = state.feedback.getValue(); 248 Integer feedback = state.feedback.getValue();
249 if (feedback == null || feedback == 0) return true; 249 if (feedback == null || feedback == 0) return true;
250 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);
251 }) 251 })
252 // 过滤完成, 收集 252 // 过滤完成, 收集
253 .toList() 253 .toList()
254 .subscribe((data, th) -> { 254 .subscribe((data, th) -> {
255 if (th != null) th.printStackTrace(); 255 if (th != null) th.printStackTrace();
256 if (data != null) {
257 Collections.sort(data);
258 }
259 homeworkAdapter.setNewData(data); 256 homeworkAdapter.setNewData(data);
260 }); 257 });
261 } 258 }
262 259
263 @SuppressLint({"CheckResult", "NotifyDataSetChanged"}) 260 @SuppressLint({"CheckResult", "NotifyDataSetChanged"})
264 private void getWeekHuyou() { 261 private void getWeekHuyou() {
265 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 0) 262 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 0)
266 .compose(transformSingle()) 263 .compose(transformSingle())
267 .map(ResponseResult::getData) 264 .map(ResponseResult::getData)
268 .subscribe((list, throwable) -> { 265 .subscribe((list, throwable) -> {
269 if (throwable != null) { 266 if (throwable != null) {
270 throwable.printStackTrace(); 267 throwable.printStackTrace();
271 return; 268 return;
272 } 269 }
273 if (list != null) { 270 if (list != null) {
274 mWeekList.clear(); 271 mWeekList.clear();
275 mWeekList.addAll(list); 272 mWeekList.addAll(list);
276 weekAdapter.notifyDataSetChanged(); 273 weekAdapter.notifyDataSetChanged();
277 274
278 boolean exist = false; 275 boolean exist = false;
279 int thisWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR); 276 int thisWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
280 for (StDetail bean: mWeekList) { 277 for (StDetail bean: mWeekList) {
281 Calendar other = Calendar.getInstance(); 278 Calendar other = Calendar.getInstance();
282 other.setTime(bean.endTime); 279 other.setTime(bean.endTime);
283 if (other.get(Calendar.WEEK_OF_YEAR) == thisWeek) { 280 if (other.get(Calendar.WEEK_OF_YEAR) == thisWeek) {
284 exist = true; 281 exist = true;
285 break; 282 break;
286 } 283 }
287 } 284 }
288 binding.btnGeneralHuyou.setVisibility(exist ? View.GONE : View.VISIBLE); 285 binding.btnGeneralHuyou.setVisibility(exist ? View.GONE : View.VISIBLE);
289 } 286 }
290 }); 287 });
291 } 288 }
292 289
293 @SuppressLint({"CheckResult", "NotifyDataSetChanged"}) 290 @SuppressLint({"CheckResult", "NotifyDataSetChanged"})
294 private void getStageHuyou() { 291 private void getStageHuyou() {
295 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 1) 292 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 1)
296 .compose(transformSingle()) 293 .compose(transformSingle())
297 .map(ResponseResult::getData) 294 .map(ResponseResult::getData)
298 .subscribe((list, throwable) -> { 295 .subscribe((list, throwable) -> {
299 if (throwable != null) { 296 if (throwable != null) {
300 throwable.printStackTrace(); 297 throwable.printStackTrace();
301 return; 298 return;
302 } 299 }
303 if (list != null) { 300 if (list != null) {
304 mStageList.clear(); 301 mStageList.clear();
305 mStageList.addAll(list); 302 mStageList.addAll(list);
306 stageAdapter.notifyDataSetChanged(); 303 stageAdapter.notifyDataSetChanged();
307 } 304 }
308 }); 305 });
309 } 306 }
310 307
311 @SuppressLint("CheckResult") 308 @SuppressLint("CheckResult")
312 private void generalWeek() { 309 private void generalWeek() {
313 showLoadingDialog("稍等..."); 310 showLoadingDialog("稍等...");
314 NetWorks.service_url.generalHuyou() 311 NetWorks.service_url.generalHuyou()
315 .compose(transformSingle()) 312 .compose(transformSingle())
316 .subscribe((response, throwable) -> { 313 .subscribe((response, throwable) -> {
317 cancelLoadingDialog(); 314 cancelLoadingDialog();
318 if (throwable != null) { 315 if (throwable != null) {
319 loadFail("失败"); 316 loadFail("失败");
320 throwable.printStackTrace(); 317 throwable.printStackTrace();
321 return; 318 return;
322 } 319 }
323 if (response != null && response.getSuccess()) { 320 if (response != null && response.getSuccess()) {
324 binding.btnGeneralHuyou.setVisibility(View.GONE); 321 binding.btnGeneralHuyou.setVisibility(View.GONE);
325 getWeekHuyou(); 322 getWeekHuyou();
326 } 323 }
327 }); 324 });
328 } 325 }
329 326
330 @SuppressLint("CheckResult") 327 @SuppressLint("CheckResult")
331 private void generalStage(Date startDate, Date endDate, String subject) { 328 private void generalStage(Date startDate, Date endDate, String subject) {
332 SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss", Locale.CHINA); 329 SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss", Locale.CHINA);
333 Map<String, Object> body = new HashMap<>(); 330 Map<String, Object> body = new HashMap<>();
334 body.put("stuId", state.student.stuId); 331 body.put("stuId", state.student.stuId);
335 body.put("startTime", format.format(startDate)); 332 body.put("startTime", format.format(startDate));
336 body.put("endTime", format.format(endDate)); 333 body.put("endTime", format.format(endDate));
337 body.put("subject", subject); 334 body.put("subject", subject);
338 showLoadingDialog("稍等..."); 335 showLoadingDialog("稍等...");
339 NetWorks.service_url.generalStageHuyou(NetWorks.getHeader(), body) 336 NetWorks.service_url.generalStageHuyou(NetWorks.getHeader(), body)
340 .subscribeOn(Schedulers.io()) 337 .subscribeOn(Schedulers.io())
341 .observeOn(AndroidSchedulers.mainThread()) 338 .observeOn(AndroidSchedulers.mainThread())
342 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 339 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
343 .subscribe((response, throwable) -> { 340 .subscribe((response, throwable) -> {
344 if (throwable != null) { 341 if (throwable != null) {
345 loadFail("失败"); 342 loadFail("失败");
346 throwable.printStackTrace(); 343 throwable.printStackTrace();
347 return; 344 return;
348 } 345 }
349 if (response.getSuccess()) { 346 if (response.getSuccess()) {
350 getStageHuyou(); 347 getStageHuyou();
351 cancelLoadingDialog(); 348 cancelLoadingDialog();
352 } else { 349 } else {
353 loadFail(response.getMsg()); 350 loadFail(response.getMsg());
354 } 351 }
355 }); 352 });
356 } 353 }
357 354
358 @SuppressLint("CheckResult") 355 @SuppressLint("CheckResult")
359 private void deleteHuyou(StDetail detail) { 356 private void deleteHuyou(StDetail detail) {
360 showLoadingDialog("稍等..."); 357 showLoadingDialog("稍等...");
361 NetWorks.service_url.deleteHuyou(NetWorks.getHeader(), detail.id) 358 NetWorks.service_url.deleteHuyou(NetWorks.getHeader(), detail.id)
362 .subscribeOn(Schedulers.io()) 359 .subscribeOn(Schedulers.io())
363 .observeOn(AndroidSchedulers.mainThread()) 360 .observeOn(AndroidSchedulers.mainThread())
364 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 361 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
365 .subscribe((response, throwable) -> { 362 .subscribe((response, throwable) -> {
366 cancelLoadingDialog(); 363 cancelLoadingDialog();
367 if (throwable != null) { 364 if (throwable != null) {
368 loadFail("失败"); 365 loadFail("失败");
369 throwable.printStackTrace(); 366 throwable.printStackTrace();
370 return; 367 return;
371 } 368 }
372 if (detail.type == 0) { 369 if (detail.type == 0) {
373 getWeekHuyou(); 370 getWeekHuyou();
374 } else { 371 } else {
375 getStageHuyou(); 372 getStageHuyou();
376 } 373 }
377 }); 374 });
378 } 375 }
379 376
380 private void showSubjectFilter() { 377 private void showSubjectFilter() {
381 if (subjectFilter == null) { 378 if (subjectFilter == null) {
382 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); 379 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater());
383 db.setLifecycleOwner(this); 380 db.setLifecycleOwner(this);
384 db.setState(state); 381 db.setState(state);
385 db.bg.setOnClickListener(v -> subjectFilter.dismiss()); 382 db.bg.setOnClickListener(v -> subjectFilter.dismiss());
386 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 383 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
387 subjectFilter.setOutsideTouchable(true); 384 subjectFilter.setOutsideTouchable(true);
388 } 385 }
389 subjectFilter.showAsDropDown(binding.anchorView); 386 subjectFilter.showAsDropDown(binding.anchorView);
390 state.onFilter = i -> { 387 state.onFilter = i -> {
391 subjectFilter.dismiss(); 388 subjectFilter.dismiss();
392 String subject = state.subject.getValue(); 389 String subject = state.subject.getValue();
393 binding.ftSubject.setActivated(subject != null && !subject.isEmpty()); 390 binding.ftSubject.setActivated(subject != null && !subject.isEmpty());
394 binding.ftSubject.setText(subject == null || subject.isEmpty() ? "学科" : subject); 391 binding.ftSubject.setText(subject == null || subject.isEmpty() ? "学科" : subject);
395 getHomework(); 392 getHomework();
396 }; 393 };
397 } 394 }
398 395
399 private void showGradeFilter() { 396 private void showGradeFilter() {
400 if (gradeFilter == null) { 397 if (gradeFilter == null) {
401 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); 398 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater());
402 db.setLifecycleOwner(this); 399 db.setLifecycleOwner(this);
403 db.setState(state); 400 db.setState(state);
404 db.bg.setOnClickListener(v -> gradeFilter.dismiss()); 401 db.bg.setOnClickListener(v -> gradeFilter.dismiss());
405 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 402 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
406 gradeFilter.setOutsideTouchable(true); 403 gradeFilter.setOutsideTouchable(true);
407 } 404 }
408 gradeFilter.showAsDropDown(binding.anchorView); 405 gradeFilter.showAsDropDown(binding.anchorView);
409 state.onFilter = i -> { 406 state.onFilter = i -> {
410 gradeFilter.dismiss(); 407 gradeFilter.dismiss();
411 String grade = state.grade.getValue(); 408 String grade = state.grade.getValue();
412 binding.ftGrade.setActivated(grade != null && !grade.isEmpty()); 409 binding.ftGrade.setActivated(grade != null && !grade.isEmpty());
413 binding.ftGrade.setText(grade == null || grade.isEmpty() ? "年级" : grade); 410 binding.ftGrade.setText(grade == null || grade.isEmpty() ? "年级" : grade);
414 411
415 getHomework(); 412 getHomework();
416 }; 413 };
417 } 414 }
418 415
419 private void showTermFilter() { 416 private void showTermFilter() {
420 if (termFilter == null) { 417 if (termFilter == null) {
421 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); 418 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater());
422 db.setLifecycleOwner(this); 419 db.setLifecycleOwner(this);
423 db.setState(state); 420 db.setState(state);
424 db.bg.setOnClickListener(v -> termFilter.dismiss()); 421 db.bg.setOnClickListener(v -> termFilter.dismiss());
425 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 422 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
426 termFilter.setOutsideTouchable(true); 423 termFilter.setOutsideTouchable(true);
427 } 424 }
428 termFilter.showAsDropDown(binding.anchorView); 425 termFilter.showAsDropDown(binding.anchorView);
429 state.onFilter = i -> { 426 state.onFilter = i -> {
430 termFilter.dismiss(); 427 termFilter.dismiss();
431 String term = state.term.getValue(); 428 String term = state.term.getValue();
432 binding.ftTerm.setActivated(term != null && !term.isEmpty()); 429 binding.ftTerm.setActivated(term != null && !term.isEmpty());
433 binding.ftTerm.setText(term == null || term.isEmpty() ? "学期" : term); 430 binding.ftTerm.setText(term == null || term.isEmpty() ? "学期" : term);
434 431
435 getHomework(); 432 getHomework();
436 }; 433 };
437 } 434 }
438 435
439 private void showFeedbackFilter() { 436 private void showFeedbackFilter() {
440 if (feedbackFilter == null) { 437 if (feedbackFilter == null) {
441 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); 438 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater());
442 db.setLifecycleOwner(this); 439 db.setLifecycleOwner(this);
443 db.setState(state); 440 db.setState(state);
444 db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); 441 db.bg.setOnClickListener(v -> feedbackFilter.dismiss());
445 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 442 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
446 feedbackFilter.setOutsideTouchable(true); 443 feedbackFilter.setOutsideTouchable(true);
447 } 444 }
448 feedbackFilter.showAsDropDown(binding.anchorView); 445 feedbackFilter.showAsDropDown(binding.anchorView);
449 state.onFilter = i -> { 446 state.onFilter = i -> {
450 feedbackFilter.dismiss(); 447 feedbackFilter.dismiss();
451 int feedback = state.feedback.getValue().intValue(); 448 int feedback = state.feedback.getValue().intValue();
452 binding.ftFeedback.setActivated(feedback != 0); 449 binding.ftFeedback.setActivated(feedback != 0);
453 binding.ftFeedback.setText(feedback == 0 ? "反馈状态" : feedback == 1 ? "已反馈" : "未反馈"); 450 binding.ftFeedback.setText(feedback == 0 ? "反馈状态" : feedback == 1 ? "已反馈" : "未反馈");
454 451
455 getHomework(); 452 getHomework();
456 }; 453 };
457 } 454 }
458 455
459 @Override 456 @Override
460 protected ActivityStudentHomeworkBinding getViewBinding() { 457 protected ActivityStudentHomeworkBinding getViewBinding() {
461 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); 458 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater());
462 } 459 }
463 460
464 public static class State { 461 public static class State {
465 public Student student; 462 public Student student;
466 463
467 public Function1<Integer> onFilter = i -> { }; 464 public Function1<Integer> onFilter = i -> { };
468 465
469 public MutableLiveData<String> subject = new MutableLiveData<>(""); 466 public MutableLiveData<String> subject = new MutableLiveData<>("");
470 public void setSubject(String value) { 467 public void setSubject(String value) {
471 subject.setValue(value); 468 subject.setValue(value);
472 onFilter.invoke(1); 469 onFilter.invoke(1);
473 } 470 }
474 471
475 public MutableLiveData<String> grade = new MutableLiveData<>(""); 472 public MutableLiveData<String> grade = new MutableLiveData<>("");
476 public void setGrade(String value) { 473 public void setGrade(String value) {
477 grade.setValue(value); 474 grade.setValue(value);
478 onFilter.invoke(2); 475 onFilter.invoke(2);
479 } 476 }
480 477
481 public MutableLiveData<String> term = new MutableLiveData<>(""); 478 public MutableLiveData<String> term = new MutableLiveData<>("");
482 public void setTerm(String value) { 479 public void setTerm(String value) {
483 term.setValue(value); 480 term.setValue(value);
484 onFilter.invoke(3); 481 onFilter.invoke(3);
485 } 482 }
486 483
487 //0:全部, 1: 已反馈, 2:未反馈 484 //0:全部, 1: 已反馈, 2:未反馈
488 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); 485 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0);
489 public void setFeedback(int value) { 486 public void setFeedback(int value) {
490 feedback.setValue(value); 487 feedback.setValue(value);
491 onFilter.invoke(4); 488 onFilter.invoke(4);
492 } 489 }
493 } 490 }
494 491
495 static class HuyouAdapter extends BaseQuickAdapter<StDetail, BaseViewHolder> { 492 static class HuyouAdapter extends BaseQuickAdapter<StDetail, BaseViewHolder> {
496 public Function1<StDetail> deleteCall; 493 public Function1<StDetail> deleteCall;
497 public Function1<StDetail> detailCall; 494 public Function1<StDetail> detailCall;
498 public Student student; 495 public Student student;
499 496
500 public HuyouAdapter(@Nullable List<StDetail> data) { 497 public HuyouAdapter(@Nullable List<StDetail> data) {
501 super(R.layout.item_homework_list, data); 498 super(R.layout.item_homework_list, data);
502 } 499 }
503 500
504 @SuppressLint("SetTextI18n,SimpleDateFormat") 501 @SuppressLint("SetTextI18n,SimpleDateFormat")
505 @Override 502 @Override
506 protected void convert(@NonNull BaseViewHolder holder, StDetail data) { 503 protected void convert(@NonNull BaseViewHolder holder, StDetail data) {
507 holder.setGone(R.id.tvFlag, false); 504 holder.setGone(R.id.tvFlag, false);
508 int subjectImg; 505 int subjectImg;
509 switch (data.homeworkSubject) { 506 switch (data.homeworkSubject) {
510 case "语文": 507 case "语文":
511 subjectImg = R.drawable.ic_chinese; 508 subjectImg = R.drawable.ic_chinese;
512 break; 509 break;
513 case "英语": 510 case "英语":
514 subjectImg = R.drawable.ic_english; 511 subjectImg = R.drawable.ic_english;
515 break; 512 break;
516 case "物理": 513 case "物理":
517 subjectImg = R.drawable.ic_physics; 514 subjectImg = R.drawable.ic_physics;
518 break; 515 break;
519 case "化学": 516 case "化学":
520 subjectImg = R.drawable.ic_chemistry; 517 subjectImg = R.drawable.ic_chemistry;
521 break; 518 break;
522 case "数学": 519 case "数学":
523 default: 520 default:
524 subjectImg = R.drawable.ic_math; 521 subjectImg = R.drawable.ic_math;
525 } 522 }
526 holder.setImageResource(R.id.ivSubject, subjectImg); 523 holder.setImageResource(R.id.ivSubject, subjectImg);
527 Date endDate = new Date(data.endTime.getTime() - 1000); 524 Date endDate = new Date(data.endTime.getTime() - 1000);
528 String startStr = new SimpleDateFormat("yyyy.M.d").format(data.startTime); 525 String startStr = new SimpleDateFormat("yyyy.M.d").format(data.startTime);
529 String endStr = new SimpleDateFormat("-M.d").format(endDate); 526 String endStr = new SimpleDateFormat("-M.d").format(endDate);
530 String typeStr = data.type == 0 ? "作业周总结" : "作业阶段性总结"; 527 String typeStr = data.type == 0 ? "作业周总结" : "作业阶段性总结";
531 String title = startStr + endStr + data.homeworkSubject + typeStr; 528 String title = startStr + endStr + data.homeworkSubject + typeStr;
532 holder.setText(R.id.tvName, title); 529 holder.setText(R.id.tvName, title);
533 holder.setText(R.id.tvGrade, data.grade); 530 holder.setText(R.id.tvGrade, data.grade);
534 View btnDelete = holder.getView(R.id.btnDelete); 531 View btnDelete = holder.getView(R.id.btnDelete);
535 View btnDetail = holder.getView(R.id.btnDetail); 532 View btnDetail = holder.getView(R.id.btnDetail);
536 btnDelete.setOnClickListener(v -> { 533 btnDelete.setOnClickListener(v -> {
537 if (deleteCall != null) deleteCall.invoke(data); 534 if (deleteCall != null) deleteCall.invoke(data);
538 }); 535 });
539 btnDetail.setOnClickListener(v -> { 536 btnDetail.setOnClickListener(v -> {
540 if (detailCall != null) detailCall.invoke(data); 537 if (detailCall != null) detailCall.invoke(data);
541 }); 538 });
542 } 539 }
543 540
544 private SimpleDateFormat getFormatWithGmt8(String pattern) { 541 private SimpleDateFormat getFormatWithGmt8(String pattern) {
545 SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA); 542 SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA);
546 //format.setTimeZone(TimeZone.getTimeZone("GMT+16")); 543 //format.setTimeZone(TimeZone.getTimeZone("GMT+16"));
547 return format; 544 return format;
548 } 545 }
549 } 546 }
550 547
551 } 548 }
552 549
app/src/main/java/com/hjx/parent/fragment/ErrorFragment.java
1 package com.hjx.parent.fragment; 1 package com.hjx.parent.fragment;
2 2
3 import static android.app.Activity.RESULT_OK; 3 import static android.app.Activity.RESULT_OK;
4 4
5 import android.annotation.SuppressLint; 5 import android.annotation.SuppressLint;
6 import android.content.Intent; 6 import android.content.Intent;
7 import android.graphics.Bitmap; 7 import android.graphics.Bitmap;
8 import android.graphics.BitmapFactory; 8 import android.graphics.BitmapFactory;
9 import android.net.Uri; 9 import android.net.Uri;
10 import android.os.Bundle; 10 import android.os.Bundle;
11 import android.provider.MediaStore; 11 import android.provider.MediaStore;
12 import android.text.TextUtils; 12 import android.text.TextUtils;
13 import android.util.Log; 13 import android.util.Log;
14 import android.view.LayoutInflater; 14 import android.view.LayoutInflater;
15 import android.view.View; 15 import android.view.View;
16 import android.view.ViewGroup; 16 import android.view.ViewGroup;
17 import android.widget.Toast; 17 import android.widget.Toast;
18 18
19 import androidx.annotation.NonNull; 19 import androidx.annotation.NonNull;
20 import androidx.annotation.Nullable; 20 import androidx.annotation.Nullable;
21 import androidx.core.content.FileProvider; 21 import androidx.core.content.FileProvider;
22 import androidx.recyclerview.widget.RecyclerView; 22 import androidx.recyclerview.widget.RecyclerView;
23 23
24 import com.bumptech.glide.Glide; 24 import com.bumptech.glide.Glide;
25 import com.bumptech.glide.load.resource.bitmap.RoundedCorners; 25 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
26 import com.bumptech.glide.request.RequestOptions; 26 import com.bumptech.glide.request.RequestOptions;
27 import com.chad.library.adapter.base.BaseQuickAdapter; 27 import com.chad.library.adapter.base.BaseQuickAdapter;
28 import com.chad.library.adapter.base.BaseViewHolder; 28 import com.chad.library.adapter.base.BaseViewHolder;
29 import com.google.android.material.tabs.TabLayout; 29 import com.google.android.material.tabs.TabLayout;
30 import com.google.gson.Gson; 30 import com.google.gson.Gson;
31 import com.hjq.permissions.OnPermissionCallback; 31 import com.hjq.permissions.OnPermissionCallback;
32 import com.hjq.permissions.Permission; 32 import com.hjq.permissions.Permission;
33 import com.hjq.permissions.XXPermissions; 33 import com.hjq.permissions.XXPermissions;
34 import com.hjx.parent.ErrorListActivity; 34 import com.hjx.parent.ErrorListActivity;
35 import com.hjx.parent.HomeworkDetailActivity; 35 import com.hjx.parent.HomeworkDetailActivity;
36 import com.hjx.parent.ImageActivity; 36 import com.hjx.parent.ImageActivity;
37 import com.hjx.parent.R; 37 import com.hjx.parent.R;
38 import com.hjx.parent.StuHomeworkActivity; 38 import com.hjx.parent.StuHomeworkActivity;
39 import com.hjx.parent.TeacherChooseActivity; 39 import com.hjx.parent.TeacherChooseActivity;
40 import com.hjx.parent.adapter.ErrorAdapter; 40 import com.hjx.parent.adapter.ErrorAdapter;
41 import com.hjx.parent.adapter.HomeworkAdapter; 41 import com.hjx.parent.adapter.HomeworkAdapter;
42 import com.hjx.parent.bean.StudentBean; 42 import com.hjx.parent.bean.StudentBean;
43 import com.hjx.parent.databinding.FragmentErrorBookBinding; 43 import com.hjx.parent.databinding.FragmentErrorBookBinding;
44 import com.hjx.parent.rx.BaseRxFragment; 44 import com.hjx.parent.rx.BaseRxFragment;
45 import com.prws.common.bean.PageInfo; 45 import com.prws.common.bean.PageInfo;
46 import com.prws.common.bean.ResponseResult; 46 import com.prws.common.bean.ResponseResult;
47 import com.prws.common.bean.Student; 47 import com.prws.common.bean.Student;
48 import com.prws.common.bean.TopicBean; 48 import com.prws.common.bean.TopicBean;
49 import com.prws.common.net.NetWorks; 49 import com.prws.common.net.NetWorks;
50 import com.prws.common.utils.BitmapUtils; 50 import com.prws.common.utils.BitmapUtils;
51 import com.prws.common.utils.CommonUtil; 51 import com.prws.common.utils.CommonUtil;
52 import com.prws.common.utils.ScreenUtils; 52 import com.prws.common.utils.ScreenUtils;
53 import com.prws.common.utils.SharedPreferencesUtil; 53 import com.prws.common.utils.SharedPreferencesUtil;
54 import com.prws.common.utils.dialog.MyButtomDialog; 54 import com.prws.common.utils.dialog.MyButtomDialog;
55 import com.trello.rxlifecycle2.android.RxLifecycleAndroid; 55 import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
56 import com.zhangteng.imagepicker.bean.ImageInfo; 56 import com.zhangteng.imagepicker.bean.ImageInfo;
57 import com.zhangteng.imagepicker.config.ImagePickerConfig; 57 import com.zhangteng.imagepicker.config.ImagePickerConfig;
58 import com.zhangteng.imagepicker.config.ImagePickerEnum; 58 import com.zhangteng.imagepicker.config.ImagePickerEnum;
59 import com.zhangteng.imagepicker.config.ImagePickerOpen; 59 import com.zhangteng.imagepicker.config.ImagePickerOpen;
60 import com.zhangteng.imagepicker.imageloader.GlideImageLoader; 60 import com.zhangteng.imagepicker.imageloader.GlideImageLoader;
61 import com.zhangteng.utils.IHandlerCallBack; 61 import com.zhangteng.utils.IHandlerCallBack;
62 62
63 import java.io.File; 63 import java.io.File;
64 import java.util.ArrayList; 64 import java.util.ArrayList;
65 import java.util.Arrays; 65 import java.util.Arrays;
66 import java.util.Collections; 66 import java.util.Collections;
67 import java.util.HashMap; 67 import java.util.HashMap;
68 import java.util.List; 68 import java.util.List;
69 import java.util.Map; 69 import java.util.Map;
70 70
71 import io.reactivex.Observable; 71 import io.reactivex.Observable;
72 import io.reactivex.Observer; 72 import io.reactivex.Observer;
73 import io.reactivex.android.schedulers.AndroidSchedulers; 73 import io.reactivex.android.schedulers.AndroidSchedulers;
74 import io.reactivex.disposables.Disposable; 74 import io.reactivex.disposables.Disposable;
75 import io.reactivex.schedulers.Schedulers; 75 import io.reactivex.schedulers.Schedulers;
76 76
77 public class ErrorFragment extends BaseRxFragment<FragmentErrorBookBinding> { 77 public class ErrorFragment extends BaseRxFragment<FragmentErrorBookBinding> {
78 StudentBean studentBean; 78 StudentBean studentBean;
79 private int subject; 79 private int subject;
80 private ErrorAdapter errorAdapter; 80 private ErrorAdapter errorAdapter;
81 private HomeworkAdapter homeworkAdapter; 81 private HomeworkAdapter homeworkAdapter;
82 private String filePath; 82 private String filePath;
83 83
84 @Override 84 @Override
85 protected FragmentErrorBookBinding onCreateViewBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup parent) { 85 protected FragmentErrorBookBinding onCreateViewBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup parent) {
86 return FragmentErrorBookBinding.inflate(inflater, parent, false); 86 return FragmentErrorBookBinding.inflate(inflater, parent, false);
87 } 87 }
88 88
89 public void refreshStudent() { 89 public void refreshStudent() {
90 String student = (String) SharedPreferencesUtil.getData("student", ""); 90 String student = (String) SharedPreferencesUtil.getData("student", "");
91 try { 91 try {
92 studentBean = new Gson().fromJson(student, StudentBean.class); 92 studentBean = new Gson().fromJson(student, StudentBean.class);
93 getBinding().tvChoose.setText(studentBean.getStuName()); 93 getBinding().tvChoose.setText(studentBean.getStuName());
94 } catch (Exception e) { 94 } catch (Exception e) {
95 e.printStackTrace(); 95 e.printStackTrace();
96 } 96 }
97 } 97 }
98 98
99 @Override 99 @Override
100 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 100 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
101 super.onViewCreated(view, savedInstanceState); 101 super.onViewCreated(view, savedInstanceState);
102 String photo = (String) SharedPreferencesUtil.getData("photo", ""); 102 String photo = (String) SharedPreferencesUtil.getData("photo", "");
103 if (!TextUtils.isEmpty(photo)) { 103 if (!TextUtils.isEmpty(photo)) {
104 RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(getContext(), 45)); 104 RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(getContext(), 45));
105 RequestOptions options = RequestOptions.bitmapTransform(roundedCorners); 105 RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
106 Glide.with(getContext()).load(photo).apply(options).into(getBinding().ivStudent); 106 Glide.with(getContext()).load(photo).apply(options).into(getBinding().ivStudent);
107 } 107 }
108 String name = (String) SharedPreferencesUtil.getData("name", ""); 108 String name = (String) SharedPreferencesUtil.getData("name", "");
109 getBinding().tvName.setText(name); 109 getBinding().tvName.setText(name);
110 refreshStudent(); 110 refreshStudent();
111 getBinding().tvChoose.setOnClickListener(v -> startActivity(new Intent(getContext(), TeacherChooseActivity.class))); 111 getBinding().tvChoose.setOnClickListener(v -> startActivity(new Intent(getContext(), TeacherChooseActivity.class)));
112 getBinding().rlTakePhoto.setOnClickListener(v -> takePhoto(0)); 112 getBinding().rlTakePhoto.setOnClickListener(v -> takePhoto(0));
113 getBinding().flEntryHomework.setOnClickListener(v -> takePhoto(1)); 113 getBinding().flEntryHomework.setOnClickListener(v -> takePhoto(1));
114 BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_subject, Arrays.asList(getResources().getStringArray(R.array.filter_subject))) { 114 BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_subject, Arrays.asList(getResources().getStringArray(R.array.filter_subject))) {
115 @Override 115 @Override
116 public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { 116 public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
117 117
118 } 118 }
119 119
120 @Override 120 @Override
121 protected void convert(@NonNull BaseViewHolder item, Object o) { 121 protected void convert(@NonNull BaseViewHolder item, Object o) {
122 item.setText(R.id.tv_subject, getResources().getStringArray(R.array.filter_subject)[item.getAdapterPosition()]); 122 item.setText(R.id.tv_subject, getResources().getStringArray(R.array.filter_subject)[item.getAdapterPosition()]);
123 switch (item.getAdapterPosition()) { 123 switch (item.getAdapterPosition()) {
124 case 0: 124 case 0:
125 item.setImageResource(R.id.iv_subject, R.mipmap.ic_chinese); 125 item.setImageResource(R.id.iv_subject, R.mipmap.ic_chinese);
126 break; 126 break;
127 case 1: 127 case 1:
128 item.setImageResource(R.id.iv_subject, R.mipmap.ic_math); 128 item.setImageResource(R.id.iv_subject, R.mipmap.ic_math);
129 break; 129 break;
130 case 2: 130 case 2:
131 item.setImageResource(R.id.iv_subject, R.mipmap.ic_english); 131 item.setImageResource(R.id.iv_subject, R.mipmap.ic_english);
132 break; 132 break;
133 case 3: 133 case 3:
134 item.setImageResource(R.id.iv_subject, R.mipmap.ic_physics); 134 item.setImageResource(R.id.iv_subject, R.mipmap.ic_physics);
135 break; 135 break;
136 case 4: 136 case 4:
137 item.setImageResource(R.id.iv_subject, R.mipmap.ic_chemistry); 137 item.setImageResource(R.id.iv_subject, R.mipmap.ic_chemistry);
138 break; 138 break;
139 } 139 }
140 ViewGroup.LayoutParams layoutParams = item.getView(R.id.rl_subject).getLayoutParams(); 140 ViewGroup.LayoutParams layoutParams = item.getView(R.id.rl_subject).getLayoutParams();
141 layoutParams.width = (CommonUtil.getScreenWidth(getContext()) - CommonUtil.dpToPx(getContext(), 30)) / 4; 141 layoutParams.width = (CommonUtil.getScreenWidth(getContext()) - CommonUtil.dpToPx(getContext(), 30)) / 4;
142 item.getView(R.id.rl_subject).setLayoutParams(layoutParams); 142 item.getView(R.id.rl_subject).setLayoutParams(layoutParams);
143 item.getConvertView().setOnClickListener(v -> { 143 item.getConvertView().setOnClickListener(v -> {
144 if (subject != item.getAdapterPosition()) { 144 if (subject != item.getAdapterPosition()) {
145 subject = item.getAdapterPosition(); 145 subject = item.getAdapterPosition();
146 String subStr = getResources().getStringArray(R.array.filter_subject)[subject]; 146 String subStr = getResources().getStringArray(R.array.filter_subject)[subject];
147 getError(subStr); 147 getError(subStr);
148 getHomework(subStr); 148 getHomework(subStr);
149 } 149 }
150 }); 150 });
151 } 151 }
152 }; 152 };
153 getBinding().rvSubject.setAdapter(adapter); 153 getBinding().rvSubject.setAdapter(adapter);
154 subject = 0; 154 subject = 0;
155 getError(getResources().getStringArray(R.array.filter_subject)[subject]); 155 getError(getResources().getStringArray(R.array.filter_subject)[subject]);
156 getBinding().llAll.setOnClickListener(v -> { 156 getBinding().llAll.setOnClickListener(v -> {
157 if (binding.tabLayout.getSelectedTabPosition() == 0) { 157 if (binding.tabLayout.getSelectedTabPosition() == 0) {
158 Intent intent = new Intent(getContext(), ErrorListActivity.class); 158 Intent intent = new Intent(getContext(), ErrorListActivity.class);
159 startActivity(intent); 159 startActivity(intent);
160 } else { 160 } else {
161 Intent intent = new Intent(getContext(), StuHomeworkActivity.class); 161 Intent intent = new Intent(getContext(), StuHomeworkActivity.class);
162 startActivity(intent); 162 startActivity(intent);
163 } 163 }
164 }); 164 });
165 165
166 errorAdapter = new ErrorAdapter(getActivity(), new ArrayList<>(), false); 166 errorAdapter = new ErrorAdapter(getActivity(), new ArrayList<>(), false);
167 homeworkAdapter = new HomeworkAdapter(); 167 homeworkAdapter = new HomeworkAdapter();
168 homeworkAdapter.setOnItemClickListener((baseQuickAdapter, view1, i) -> { 168 homeworkAdapter.setOnItemClickListener((baseQuickAdapter, view1, i) -> {
169 Gson gson = new Gson(); 169 Gson gson = new Gson();
170 String json = gson.toJson(studentBean); 170 String json = gson.toJson(studentBean);
171 Student s = gson.fromJson(json, Student.class); 171 Student s = gson.fromJson(json, Student.class);
172 Intent intent = new Intent(requireContext(), HomeworkDetailActivity.class); 172 Intent intent = new Intent(requireContext(), HomeworkDetailActivity.class);
173 intent.putExtra("student", s); 173 intent.putExtra("student", s);
174 intent.putExtra("data", homeworkAdapter.getData().get(i)); 174 intent.putExtra("data", homeworkAdapter.getData().get(i));
175 startActivity(intent); 175 startActivity(intent);
176 }); 176 });
177 binding.rvMain.setAdapter(errorAdapter); 177 binding.rvMain.setAdapter(errorAdapter);
178 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("最近错题")); 178 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("最近错题"));
179 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("最近作业")); 179 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("最近作业"));
180 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 180 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
181 @Override 181 @Override
182 public void onTabSelected(TabLayout.Tab tab) { 182 public void onTabSelected(TabLayout.Tab tab) {
183 if (tab.getPosition() == 0) { 183 if (tab.getPosition() == 0) {
184 binding.rvMain.setAdapter(errorAdapter); 184 binding.rvMain.setAdapter(errorAdapter);
185 binding.rvMain.setVisibility(errorAdapter.list.isEmpty() ? View.GONE : View.VISIBLE); 185 binding.rvMain.setVisibility(errorAdapter.list.isEmpty() ? View.GONE : View.VISIBLE);
186 binding.llEmpty.setVisibility(errorAdapter.list.isEmpty() ? View.VISIBLE : View.GONE); 186 binding.llEmpty.setVisibility(errorAdapter.list.isEmpty() ? View.VISIBLE : View.GONE);
187 binding.tvListTitle.setText("最近错题"); 187 binding.tvListTitle.setText("最近错题");
188 binding.tvEmpty.setText("暂无错题~"); 188 binding.tvEmpty.setText("暂无错题~");
189 } else { 189 } else {
190 binding.rvMain.setAdapter(homeworkAdapter); 190 binding.rvMain.setAdapter(homeworkAdapter);
191 binding.rvMain.setVisibility(homeworkAdapter.getData().isEmpty() ? View.GONE : View.VISIBLE); 191 binding.rvMain.setVisibility(homeworkAdapter.getData().isEmpty() ? View.GONE : View.VISIBLE);
192 binding.llEmpty.setVisibility(homeworkAdapter.getData().isEmpty() ? View.VISIBLE : View.GONE); 192 binding.llEmpty.setVisibility(homeworkAdapter.getData().isEmpty() ? View.VISIBLE : View.GONE);
193 binding.tvListTitle.setText("最近作业"); 193 binding.tvListTitle.setText("最近作业");
194 binding.tvEmpty.setText("暂无作业~"); 194 binding.tvEmpty.setText("暂无作业~");
195 } 195 }
196 } 196 }
197 @Override 197 @Override
198 public void onTabUnselected(TabLayout.Tab tab) { 198 public void onTabUnselected(TabLayout.Tab tab) {
199 } 199 }
200 @Override 200 @Override
201 public void onTabReselected(TabLayout.Tab tab) { 201 public void onTabReselected(TabLayout.Tab tab) {
202 } 202 }
203 }); 203 });
204 } 204 }
205 205
206 private void takePhoto(int type) { 206 private void takePhoto(int type) {
207 if (!XXPermissions.isGranted(getContext(), Permission.CAMERA, Permission.WRITE_EXTERNAL_STORAGE)) { 207 if (!XXPermissions.isGranted(getContext(), Permission.CAMERA, Permission.WRITE_EXTERNAL_STORAGE)) {
208 XXPermissions.with(getContext()) 208 XXPermissions.with(getContext())
209 // 申请多个权限 209 // 申请多个权限
210 .permission(Permission.CAMERA).request(new OnPermissionCallback() { 210 .permission(Permission.CAMERA).request(new OnPermissionCallback() {
211 @Override 211 @Override
212 public void onGranted(List<String> permissions, boolean all) { 212 public void onGranted(List<String> permissions, boolean all) {
213 if (all) { 213 if (all) {
214 //开启扫码界面 214 //开启扫码界面
215 showButtonDialog(type); 215 showButtonDialog(type);
216 } else { 216 } else {
217 Toast.makeText(getContext(), "需要权限", Toast.LENGTH_SHORT).show(); 217 Toast.makeText(getContext(), "需要权限", Toast.LENGTH_SHORT).show();
218 } 218 }
219 } 219 }
220 220
221 @Override 221 @Override
222 public void onDenied(List<String> permissions, boolean never) { 222 public void onDenied(List<String> permissions, boolean never) {
223 XXPermissions.startPermissionActivity(getContext(), permissions); 223 XXPermissions.startPermissionActivity(getContext(), permissions);
224 } 224 }
225 }); 225 });
226 } else { 226 } else {
227 showButtonDialog(type); 227 showButtonDialog(type);
228 } 228 }
229 } 229 }
230 230
231 private void showButtonDialog(int type) { 231 private void showButtonDialog(int type) {
232 MyButtomDialog dialog = new MyButtomDialog(getActivity(), R.style.BottomSheetDialog); 232 MyButtomDialog dialog = new MyButtomDialog(getActivity(), R.style.BottomSheetDialog);
233 View bottomView = LayoutInflater.from(getActivity()).inflate(R.layout.bottom_sheet_layout, null); 233 View bottomView = LayoutInflater.from(getActivity()).inflate(R.layout.bottom_sheet_layout, null);
234 dialog.setContentView(bottomView); 234 dialog.setContentView(bottomView);
235 bottomView.findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener() { 235 bottomView.findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener() {
236 @Override 236 @Override
237 public void onClick(View view) { 237 public void onClick(View view) {
238 dialog.dismiss(); 238 dialog.dismiss();
239 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 239 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
240 //确保有相机来处理Intent 240 //确保有相机来处理Intent
241 filePath = requireActivity().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg"; 241 filePath = requireActivity().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg";
242 File photoFile = new File(filePath); 242 File photoFile = new File(filePath);
243 243
244 //适配Android 7.0文件权限,通过FileProvider创建一个content类型的Uri 244 //适配Android 7.0文件权限,通过FileProvider创建一个content类型的Uri
245 Uri photoUri = FileProvider.getUriForFile(requireActivity(), "com.hjx.parent.fileprovider", photoFile); 245 Uri photoUri = FileProvider.getUriForFile(requireActivity(), "com.hjx.parent.fileprovider", photoFile);
246 takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 246 takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
247 takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 247 takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
248 startActivityForResult(takePictureIntent, type == 0 ? 0xA01 : 0xA02); 248 startActivityForResult(takePictureIntent, type == 0 ? 0xA01 : 0xA02);
249 } 249 }
250 }); 250 });
251 bottomView.findViewById(R.id.choose_photo).setOnClickListener(new View.OnClickListener() { 251 bottomView.findViewById(R.id.choose_photo).setOnClickListener(new View.OnClickListener() {
252 @Override 252 @Override
253 public void onClick(View view) { 253 public void onClick(View view) {
254 dialog.dismiss(); 254 dialog.dismiss();
255 ImagePickerConfig imagePickerConfig = new ImagePickerConfig.Builder().provider(getActivity().getPackageName() + ".fileprovider").imageLoader(new GlideImageLoader()) //图片加载器 255 ImagePickerConfig imagePickerConfig = new ImagePickerConfig.Builder().provider(getActivity().getPackageName() + ".fileprovider").imageLoader(new GlideImageLoader()) //图片加载器
256 .iHandlerCallBack(new HandlerCallBack(type)) //图片选择器生命周期监听(直接打开摄像头时无效) 256 .iHandlerCallBack(new HandlerCallBack(type)) //图片选择器生命周期监听(直接打开摄像头时无效)
257 .multiSelect(true) //是否多选 257 .multiSelect(true) //是否多选
258 .isShowCamera(false).isVideoPicker(false) //是否选择视频 默认false 258 .isShowCamera(false).isVideoPicker(false) //是否选择视频 默认false
259 .isImagePicker(true).imagePickerType(ImagePickerEnum.PHOTO_PICKER) //选择器打开类型 259 .isImagePicker(true).imagePickerType(ImagePickerEnum.PHOTO_PICKER) //选择器打开类型
260 .maxImageSelectable(5) //图片可选择数 260 .maxImageSelectable(5) //图片可选择数
261 .maxHeight(1920) //图片最大高度 261 .maxHeight(1920) //图片最大高度
262 .maxWidth(1920) //图片最大宽度 262 .maxWidth(1920) //图片最大宽度
263 .maxImageSize(3) //图片最大大小Mb 263 .maxImageSize(3) //图片最大大小Mb
264 .isCrop(false).pathList(new ArrayList<>()).pickerThemeColorRes(R.color.image_picker_white).pickerTitleColorRes(R.color.image_picker_text_black).cropThemeColorRes(R.color.image_picker_white).cropTitleColorRes(R.color.image_picker_text_black).pickerBackRes(R.mipmap.image_picker_back_black).pickerFolderRes(R.mipmap.image_picker_folder_black).build(); 264 .isCrop(false).pathList(new ArrayList<>()).pickerThemeColorRes(R.color.image_picker_white).pickerTitleColorRes(R.color.image_picker_text_black).cropThemeColorRes(R.color.image_picker_white).cropTitleColorRes(R.color.image_picker_text_black).pickerBackRes(R.mipmap.image_picker_back_black).pickerFolderRes(R.mipmap.image_picker_folder_black).build();
265 ImagePickerOpen.getInstance().setImagePickerConfig(imagePickerConfig).pathList(new ArrayList<>()).open(getActivity()); 265 ImagePickerOpen.getInstance().setImagePickerConfig(imagePickerConfig).pathList(new ArrayList<>()).open(getActivity());
266 266
267 } 267 }
268 }); 268 });
269 bottomView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { 269 bottomView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
270 @Override 270 @Override
271 public void onClick(View view) { 271 public void onClick(View view) {
272 dialog.dismiss(); 272 dialog.dismiss();
273 } 273 }
274 }); 274 });
275 dialog.show(); 275 dialog.show();
276 } 276 }
277 277
278 @SuppressLint("CheckResult") 278 @SuppressLint("CheckResult")
279 protected void getHomework(String subject) { 279 protected void getHomework(String subject) {
280 if (studentBean == null) return; 280 if (studentBean == null) return;
281 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), studentBean.getStuId()) 281 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), studentBean.getStuId())
282 .subscribeOn(Schedulers.io()) 282 .subscribeOn(Schedulers.io())
283 .observeOn(AndroidSchedulers.mainThread()) 283 .observeOn(AndroidSchedulers.mainThread())
284 .compose(RxLifecycleAndroid.bindFragment(getRxLifecycle())) 284 .compose(RxLifecycleAndroid.bindFragment(getRxLifecycle()))
285 .map(ResponseResult::getData) 285 .map(ResponseResult::getData)
286 .toObservable() 286 .toObservable()
287 .concatMap(Observable::fromIterable) 287 .concatMap(Observable::fromIterable)
288 .filter(data -> subject.equals(data.getSubject())) 288 .filter(data -> subject.equals(data.getSubject()))
289 .filter(data -> data.getRight() == null) 289 .filter(data -> data.getRight() == null)
290 .toList() 290 .toList()
291 .subscribe((data, th) -> { 291 .subscribe((data, th) -> {
292 if (th != null) th.printStackTrace(); 292 if (th != null) th.printStackTrace();
293 if (data != null) {
294 Collections.sort(data);
295 }
296 homeworkAdapter.setNewData(data); 293 homeworkAdapter.setNewData(data);
297 if (binding.tabLayout.getSelectedTabPosition() == 1) { 294 if (binding.tabLayout.getSelectedTabPosition() == 1) {
298 binding.rvMain.setVisibility(data == null || data.isEmpty() ? View.GONE : View.VISIBLE); 295 binding.rvMain.setVisibility(data == null || data.isEmpty() ? View.GONE : View.VISIBLE);
299 binding.llEmpty.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE); 296 binding.llEmpty.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
300 } 297 }
301 }); 298 });
302 } 299 }
303 300
304 private void getError(String subject) { 301 private void getError(String subject) {
305 if (studentBean == null) { 302 if (studentBean == null) {
306 return; 303 return;
307 } 304 }
308 Map<String, Object> map = new HashMap<>(); 305 Map<String, Object> map = new HashMap<>();
309 map.put("subject", subject); 306 map.put("subject", subject);
310 map.put("stuId", studentBean.getStuId()); 307 map.put("stuId", studentBean.getStuId());
311 map.put("pageSize", 5); 308 map.put("pageSize", 5);
312 map.put("pageNum", 1); 309 map.put("pageNum", 1);
313 NetWorks.getError(map, new Observer<ResponseResult<PageInfo<TopicBean>>>() { 310 NetWorks.getError(map, new Observer<ResponseResult<PageInfo<TopicBean>>>() {
314 @Override 311 @Override
315 public void onSubscribe(Disposable d) { 312 public void onSubscribe(Disposable d) {
316 } 313 }
317 @Override 314 @Override
318 public void onNext(ResponseResult<PageInfo<TopicBean>> result) { 315 public void onNext(ResponseResult<PageInfo<TopicBean>> result) {
319 if (result.getData() != null && result.getCode() == 200) { 316 if (result.getData() != null && result.getCode() == 200) {
320 List<TopicBean> topicBeans = result.getData().getList(); 317 List<TopicBean> topicBeans = result.getData().getList();
321 errorAdapter.refresh(topicBeans); 318 errorAdapter.refresh(topicBeans);
322 if (binding.tabLayout.getSelectedTabPosition() == 0) { 319 if (binding.tabLayout.getSelectedTabPosition() == 0) {
323 if (topicBeans.size() > 0) { 320 if (topicBeans.size() > 0) {
324 getBinding().rvMain.setVisibility(View.VISIBLE); 321 getBinding().rvMain.setVisibility(View.VISIBLE);
325 getBinding().llEmpty.setVisibility(View.GONE); 322 getBinding().llEmpty.setVisibility(View.GONE);
326 } else { 323 } else {
327 getBinding().rvMain.setVisibility(View.GONE); 324 getBinding().rvMain.setVisibility(View.GONE);
328 getBinding().llEmpty.setVisibility(View.VISIBLE); 325 getBinding().llEmpty.setVisibility(View.VISIBLE);
329 } 326 }
330 } 327 }
331 } 328 }
332 } 329 }
333 @Override 330 @Override
334 public void onError(Throwable e) { 331 public void onError(Throwable e) {
335 e.printStackTrace(); 332 e.printStackTrace();
336 } 333 }
337 @Override 334 @Override
338 public void onComplete() { 335 public void onComplete() {
339 } 336 }
340 }); 337 });
341 } 338 }
342 339
343 @Override 340 @Override
344 public void onResume() { 341 public void onResume() {
345 super.onResume(); 342 super.onResume();
346 String subStr = getResources().getStringArray(R.array.filter_subject)[subject]; 343 String subStr = getResources().getStringArray(R.array.filter_subject)[subject];
347 getError(subStr); 344 getError(subStr);
348 getHomework(subStr); 345 getHomework(subStr);
349 } 346 }
350 347
351 public class HandlerCallBack implements IHandlerCallBack<ImageInfo> { 348 public class HandlerCallBack implements IHandlerCallBack<ImageInfo> {
352 int type; 349 int type;
353 public HandlerCallBack(int type) { 350 public HandlerCallBack(int type) {
354 this.type = type; 351 this.type = type;
355 } 352 }
356 353
357 private String TAG = "---ImagePicker---"; 354 private String TAG = "---ImagePicker---";
358 List<ImageInfo> photoList = new ArrayList<>(); 355 List<ImageInfo> photoList = new ArrayList<>();
359 356
360 @Override 357 @Override
361 public void onStart() { 358 public void onStart() {
362 Log.i(TAG, "onStart: 开启"); 359 Log.i(TAG, "onStart: 开启");
363 } 360 }
364 361
365 @Override 362 @Override
366 public void onSuccess(List<ImageInfo> photoList) { 363 public void onSuccess(List<ImageInfo> photoList) {
367 this.photoList = photoList; 364 this.photoList = photoList;
368 Log.i(TAG, "onSuccess: 返回数据"); 365 Log.i(TAG, "onSuccess: 返回数据");
369 } 366 }
370 367
371 @Override 368 @Override
372 public void onCancel() { 369 public void onCancel() {
373 Log.i(TAG, "onCancel: 取消"); 370 Log.i(TAG, "onCancel: 取消");
374 } 371 }
375 372
376 @Override 373 @Override
377 public void onFinish(List<ImageInfo> selectImage) { 374 public void onFinish(List<ImageInfo> selectImage) {
378 if (selectImage.size() == photoList.size()) { 375 if (selectImage.size() == photoList.size()) {
379 ArrayList<String> strings = new ArrayList<>(); 376 ArrayList<String> strings = new ArrayList<>();
380 Intent intent = new Intent(getActivity(), ImageActivity.class); 377 Intent intent = new Intent(getActivity(), ImageActivity.class);
381 for (ImageInfo imageInfo : selectImage) { 378 for (ImageInfo imageInfo : selectImage) {
382 strings.add(imageInfo.getPath()); 379 strings.add(imageInfo.getPath());
383 } 380 }
384 intent.putStringArrayListExtra("images", strings); 381 intent.putStringArrayListExtra("images", strings);
385 intent.putExtra("type", type); 382 intent.putExtra("type", type);
386 startActivity(intent); 383 startActivity(intent);
387 } 384 }
388 } 385 }
389 386
390 @Override 387 @Override
391 public void onError() { 388 public void onError() {
392 Log.i(TAG, "onError: 出错"); 389 Log.i(TAG, "onError: 出错");
393 } 390 }
394 } 391 }
395 392
396 @Override 393 @Override
397 public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 394 public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
398 super.onActivityResult(requestCode, resultCode, data); 395 super.onActivityResult(requestCode, resultCode, data);
399 if (resultCode != RESULT_OK) return; 396 if (resultCode != RESULT_OK) return;
400 if (requestCode == 0xA01 || requestCode == 0xA02 && !TextUtils.isEmpty(filePath)) { 397 if (requestCode == 0xA01 || requestCode == 0xA02 && !TextUtils.isEmpty(filePath)) {
401 Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath)); 398 Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath));
402 String path = getContext().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg"; 399 String path = getContext().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg";
403 CommonUtil.saveBitmapToUri(b, path); 400 CommonUtil.saveBitmapToUri(b, path);
404 ArrayList<String> strings = new ArrayList<>(); 401 ArrayList<String> strings = new ArrayList<>();
405 Intent intent = new Intent(getContext(), ImageActivity.class); 402 Intent intent = new Intent(getContext(), ImageActivity.class);
406 strings.add(path); 403 strings.add(path);
407 intent.putStringArrayListExtra("images", strings); 404 intent.putStringArrayListExtra("images", strings);
408 intent.putExtra("type", requestCode == 0xA01 ? 0 : 1); 405 intent.putExtra("type", requestCode == 0xA01 ? 0 : 1);
409 startActivity(intent); 406 startActivity(intent);
410 } 407 }
411 } 408 }
412 } 409 }
413 410
libs/common/src/main/java/com/prws/common/bean/homework/HomeworkList.java
1 package com.prws.common.bean.homework; 1 package com.prws.common.bean.homework;
2 2
3 import com.google.gson.annotations.SerializedName; 3 import com.google.gson.annotations.SerializedName;
4 4
5 import java.io.Serializable; 5 import java.io.Serializable;
6 import java.text.SimpleDateFormat; 6 import java.text.SimpleDateFormat;
7 import java.util.Date; 7 import java.util.Date;
8 import java.util.Locale; 8 import java.util.Locale;
9 9
10 public class HomeworkList implements Comparable<HomeworkList>, Serializable { 10 public class HomeworkList implements Serializable {
11 11
12 @SerializedName(value = "homeworkId", alternate = "id") 12 @SerializedName(value = "homeworkId", alternate = "id")
13 private String homeworkId; 13 private String homeworkId;
14 @SerializedName(value = "name", alternate = "homeworkName") 14 @SerializedName(value = "name", alternate = "homeworkName")
15 private String name; 15 private String name;
16 @SerializedName("grade") 16 @SerializedName("grade")
17 private String grade; 17 private String grade;
18 @SerializedName("term") 18 @SerializedName("term")
19 private String term; 19 private String term;
20 @SerializedName("subject") 20 @SerializedName("subject")
21 private String subject; 21 private String subject;
22 private int completeFlag; 22 private int completeFlag;
23 23
24 private Integer total; 24 private Integer total;
25 private Integer right; 25 private Integer right;
26 26
27 public Date uploadTime; 27 public Date uploadTime;
28 28
29 public Integer getTotal() { 29 public Integer getTotal() {
30 return total; 30 return total;
31 } 31 }
32 32
33 public Integer getRight() { 33 public Integer getRight() {
34 return right; 34 return right;
35 } 35 }
36 36
37 public void setRight(Integer right) { 37 public void setRight(Integer right) {
38 this.right = right; 38 this.right = right;
39 } 39 }
40 40
41 public void setTotal(Integer total) { 41 public void setTotal(Integer total) {
42 this.total = total; 42 this.total = total;
43 } 43 }
44 44
45 public void setId(String id) { 45 public void setId(String id) {
46 this.homeworkId = id; 46 this.homeworkId = id;
47 } 47 }
48 48
49 public void setName(String name) { 49 public void setName(String name) {
50 this.name = name; 50 this.name = name;
51 } 51 }
52 52
53 public void setGrade(String grade) { 53 public void setGrade(String grade) {
54 this.grade = grade; 54 this.grade = grade;
55 } 55 }
56 56
57 public void setTerm(String term) { 57 public void setTerm(String term) {
58 this.term = term; 58 this.term = term;
59 } 59 }
60 60
61 public void setSubject(String subject) { 61 public void setSubject(String subject) {
62 this.subject = subject; 62 this.subject = subject;
63 } 63 }
64 64
65 public void setCompleteFlag(int completeFlag) { 65 public void setCompleteFlag(int completeFlag) {
66 this.completeFlag = completeFlag; 66 this.completeFlag = completeFlag;
67 } 67 }
68 68
69 public String getId() { 69 public String getId() {
70 return homeworkId; 70 return homeworkId;
71 } 71 }
72 72
73 public String getName() { 73 public String getName() {
74 return name; 74 return name;
75 } 75 }
76 76
77 public String getGrade() { 77 public String getGrade() {
78 return grade; 78 return grade;
79 } 79 }
80 80
81 public String getTerm() { 81 public String getTerm() {
82 return term; 82 return term;
83 } 83 }
84 84
85 public String getSubject() { 85 public String getSubject() {
86 return subject; 86 return subject;
87 } 87 }
88 88
89 public int getCompleteFlag() { 89 public int getCompleteFlag() {
90 return completeFlag; 90 return completeFlag;
91 } 91 }
92 92
93 @Override
94 public int compareTo(HomeworkList other) {
95 long time1 = this.uploadTime == null ? 0 : this.uploadTime.getTime();
96 long time2 = other.uploadTime == null ? 0 : other.uploadTime.getTime();
97 return (int) (time2 - time1);
98 }
99
100 private String time; 93 private String time;
101 public String getFormatTime() { 94 public String getFormatTime() {
102 if (uploadTime == null) return ""; 95 if (uploadTime == null) return "";
103 if (time != null) return time; 96 if (time != null) return time;
104 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA); 97 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
105 time = format.format(uploadTime); 98 time = format.format(uploadTime);
106 return time; 99 return time;
107 } 100 }
108 } 101 }
109 102