Commit e253e5291b8fc0b1f01b6102630749a446530aba

Authored by shixianjie
1 parent 45d5814c1b
Exists in master

flatMap改为concatMap, 有序变换

.idea/deploymentTargetDropDown.xml
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <project version="4"> 2 <project version="4">
3 <component name="deploymentTargetDropDown"> 3 <component name="deploymentTargetDropDown">
4 <value> 4 <value>
5 <entry key="app"> 5 <entry key="app">
6 <State> 6 <State />
7 <runningDeviceTargetSelectedWithDropDown>
8 <Target>
9 <type value="RUNNING_DEVICE_TARGET" />
10 <deviceKey>
11 <Key>
12 <type value="SERIAL_NUMBER" />
13 <value value="192.168.3.176:35119" />
14 </Key>
15 </deviceKey>
16 </Target>
17 </runningDeviceTargetSelectedWithDropDown>
18 <timeTargetWasSelectedWithDropDown value="2024-10-09T03:21:59.277023400Z" />
19 </State>
20 </entry> 7 </entry>
21 </value> 8 </value>
22 </component> 9 </component>
23 </project> 10 </project>
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.Gravity; 6 import android.view.Gravity;
7 import android.view.View; 7 import android.view.View;
8 import android.widget.ImageView; 8 import android.widget.ImageView;
9 import android.widget.LinearLayout; 9 import android.widget.LinearLayout;
10 import android.widget.PopupMenu; 10 import android.widget.PopupMenu;
11 import android.widget.PopupWindow; 11 import android.widget.PopupWindow;
12 import android.widget.TextView; 12 import android.widget.TextView;
13 13
14 import androidx.annotation.NonNull; 14 import androidx.annotation.NonNull;
15 import androidx.annotation.Nullable; 15 import androidx.annotation.Nullable;
16 import androidx.lifecycle.MutableLiveData; 16 import androidx.lifecycle.MutableLiveData;
17 17
18 import com.chad.library.adapter.base.BaseQuickAdapter; 18 import com.chad.library.adapter.base.BaseQuickAdapter;
19 import com.chad.library.adapter.base.BaseViewHolder; 19 import com.chad.library.adapter.base.BaseViewHolder;
20 import com.google.android.material.tabs.TabLayout; 20 import com.google.android.material.tabs.TabLayout;
21 import com.google.gson.Gson; 21 import com.google.gson.Gson;
22 import com.hjx.parent.adapter.HomeworkListAdapter; 22 import com.hjx.parent.adapter.HomeworkListAdapter;
23 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; 23 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding;
24 import com.hjx.parent.databinding.PopupFilterFeedbackBinding; 24 import com.hjx.parent.databinding.PopupFilterFeedbackBinding;
25 import com.hjx.parent.databinding.PopupFilterGradeBinding; 25 import com.hjx.parent.databinding.PopupFilterGradeBinding;
26 import com.hjx.parent.databinding.PopupFilterSubjectBinding; 26 import com.hjx.parent.databinding.PopupFilterSubjectBinding;
27 import com.hjx.parent.databinding.PopupFilterTermBinding; 27 import com.hjx.parent.databinding.PopupFilterTermBinding;
28 import com.hjx.parent.dialog.MsgConfirmDialog; 28 import com.hjx.parent.dialog.MsgConfirmDialog;
29 import com.hjx.parent.dialog.StageHuyouDialog; 29 import com.hjx.parent.dialog.StageHuyouDialog;
30 import com.hjx.parent.function.Function1; 30 import com.hjx.parent.function.Function1;
31 import com.hjx.parent.rx.BaseRxActivity; 31 import com.hjx.parent.rx.BaseRxActivity;
32 import com.prws.common.bean.ResponseResult; 32 import com.prws.common.bean.ResponseResult;
33 import com.prws.common.bean.Student; 33 import com.prws.common.bean.Student;
34 import com.prws.common.bean.homework.HomeworkList; 34 import com.prws.common.bean.homework.HomeworkList;
35 import com.prws.common.bean.homework.StDetail; 35 import com.prws.common.bean.homework.StDetail;
36 import com.prws.common.net.NetWorks; 36 import com.prws.common.net.NetWorks;
37 import com.prws.common.utils.SharedPreferencesUtil; 37 import com.prws.common.utils.SharedPreferencesUtil;
38 import com.trello.rxlifecycle2.android.RxLifecycleAndroid; 38 import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
39 39
40 import java.text.DecimalFormat; 40 import java.text.DecimalFormat;
41 import java.text.SimpleDateFormat; 41 import java.text.SimpleDateFormat;
42 import java.util.ArrayList; 42 import java.util.ArrayList;
43 import java.util.Calendar; 43 import java.util.Calendar;
44 import java.util.Collections; 44 import java.util.Collections;
45 import java.util.Date; 45 import java.util.Date;
46 import java.util.HashMap; 46 import java.util.HashMap;
47 import java.util.List; 47 import java.util.List;
48 import java.util.Locale; 48 import java.util.Locale;
49 import java.util.Map; 49 import java.util.Map;
50 50
51 import io.reactivex.Observable; 51 import io.reactivex.Observable;
52 import io.reactivex.android.schedulers.AndroidSchedulers; 52 import io.reactivex.android.schedulers.AndroidSchedulers;
53 import io.reactivex.schedulers.Schedulers; 53 import io.reactivex.schedulers.Schedulers;
54 54
55 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { 55 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> {
56 56
57 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); 57 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter();
58 58
59 private final List<StDetail> mWeekList = new ArrayList<>(); 59 private final List<StDetail> mWeekList = new ArrayList<>();
60 private final List<StDetail> mStageList = new ArrayList<>(); 60 private final List<StDetail> mStageList = new ArrayList<>();
61 private final HuyouAdapter weekAdapter = new HuyouAdapter(mWeekList); 61 private final HuyouAdapter weekAdapter = new HuyouAdapter(mWeekList);
62 private final HuyouAdapter stageAdapter = new HuyouAdapter(mStageList); 62 private final HuyouAdapter stageAdapter = new HuyouAdapter(mStageList);
63 63
64 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; 64 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter;
65 MsgConfirmDialog deleteDialog; 65 MsgConfirmDialog deleteDialog;
66 StageHuyouDialog stageHuyouDialog; 66 StageHuyouDialog stageHuyouDialog;
67 State state = new State(); 67 State state = new State();
68 68
69 private void handlerIntent() { 69 private void handlerIntent() {
70 String json = getIntent().getStringExtra("studentJson"); 70 String json = getIntent().getStringExtra("studentJson");
71 if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); 71 if (json == null) json = (String) SharedPreferencesUtil.getData("student", "");
72 try { state.student = new Gson().fromJson(json, Student.class); } 72 try { state.student = new Gson().fromJson(json, Student.class); }
73 catch (Throwable t) { t.printStackTrace(); } 73 catch (Throwable t) { t.printStackTrace(); }
74 } 74 }
75 75
76 @SuppressLint("SetTextI18n") 76 @SuppressLint("SetTextI18n")
77 @Override 77 @Override
78 public void initView(Bundle savedInstanceState) { 78 public void initView(Bundle savedInstanceState) {
79 handlerIntent(); 79 handlerIntent();
80 if (state.student == null) { 80 if (state.student == null) {
81 finish(); 81 finish();
82 return; 82 return;
83 } 83 }
84 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); 84 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
85 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 85 binding.tvTitle.setText(state.student.stuName + "的全部作业");
86 setupTab(); 86 setupTab();
87 binding.recyclerView.setAdapter(homeworkAdapter); 87 binding.recyclerView.setAdapter(homeworkAdapter);
88 88
89 deleteDialog = new MsgConfirmDialog.Builder(this) 89 deleteDialog = new MsgConfirmDialog.Builder(this)
90 .setMessage("确认要删除吗?一旦删除不可恢复") 90 .setMessage("确认要删除吗?一旦删除不可恢复")
91 .setPositive("暂不删除") 91 .setPositive("暂不删除")
92 .setNegative("确定删除") 92 .setNegative("确定删除")
93 .build(); 93 .build();
94 94
95 binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); 95 binding.ftSubject.setOnClickListener(v -> showSubjectFilter());
96 binding.ftGrade.setOnClickListener(v -> showGradeFilter()); 96 binding.ftGrade.setOnClickListener(v -> showGradeFilter());
97 binding.ftTerm.setOnClickListener(v -> showTermFilter()); 97 binding.ftTerm.setOnClickListener(v -> showTermFilter());
98 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); 98 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter());
99 homeworkAdapter.deleteCall = data -> { 99 homeworkAdapter.deleteCall = data -> {
100 deleteDialog.show(null, () -> { 100 deleteDialog.show(null, () -> {
101 deleteHomework(data); 101 deleteHomework(data);
102 return true; 102 return true;
103 }); 103 });
104 }; 104 };
105 homeworkAdapter.detailCall = data -> { 105 homeworkAdapter.detailCall = data -> {
106 if (data.getRight() == null) { 106 if (data.getRight() == null) {
107 Intent intent = new Intent(this, HomeworkDetailActivity.class); 107 Intent intent = new Intent(this, HomeworkDetailActivity.class);
108 intent.putExtra("data", data); 108 intent.putExtra("data", data);
109 intent.putExtra("student", state.student); 109 intent.putExtra("student", state.student);
110 startActivity(intent); 110 startActivity(intent);
111 } else { 111 } else {
112 Intent intent = new Intent(this, HomeworkShareActivity.class); 112 Intent intent = new Intent(this, HomeworkShareActivity.class);
113 intent.putExtra("student", state.student); 113 intent.putExtra("student", state.student);
114 intent.putExtra("id", data.getId()); 114 intent.putExtra("id", data.getId());
115 intent.putExtra("grade", data.getGrade()); 115 intent.putExtra("grade", data.getGrade());
116 intent.putExtra("subject", data.getSubject()); 116 intent.putExtra("subject", data.getSubject());
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 .flatMap(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) { 256 if (data != null) {
257 Collections.sort(data); 257 Collections.sort(data);
258 } 258 }
259 homeworkAdapter.setNewData(data); 259 homeworkAdapter.setNewData(data);
260 }); 260 });
261 } 261 }
262 262
263 @SuppressLint({"CheckResult", "NotifyDataSetChanged"}) 263 @SuppressLint({"CheckResult", "NotifyDataSetChanged"})
264 private void getWeekHuyou() { 264 private void getWeekHuyou() {
265 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 0) 265 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 0)
266 .compose(transformSingle()) 266 .compose(transformSingle())
267 .map(ResponseResult::getData) 267 .map(ResponseResult::getData)
268 .subscribe((list, throwable) -> { 268 .subscribe((list, throwable) -> {
269 if (throwable != null) { 269 if (throwable != null) {
270 throwable.printStackTrace(); 270 throwable.printStackTrace();
271 return; 271 return;
272 } 272 }
273 if (list != null) { 273 if (list != null) {
274 mWeekList.clear(); 274 mWeekList.clear();
275 mWeekList.addAll(list); 275 mWeekList.addAll(list);
276 weekAdapter.notifyDataSetChanged(); 276 weekAdapter.notifyDataSetChanged();
277 277
278 boolean exist = false; 278 boolean exist = false;
279 int thisWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR); 279 int thisWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
280 for (StDetail bean: mWeekList) { 280 for (StDetail bean: mWeekList) {
281 Calendar other = Calendar.getInstance(); 281 Calendar other = Calendar.getInstance();
282 other.setTime(bean.endTime); 282 other.setTime(bean.endTime);
283 if (other.get(Calendar.WEEK_OF_YEAR) == thisWeek) { 283 if (other.get(Calendar.WEEK_OF_YEAR) == thisWeek) {
284 exist = true; 284 exist = true;
285 break; 285 break;
286 } 286 }
287 } 287 }
288 binding.btnGeneralHuyou.setVisibility(exist ? View.GONE : View.VISIBLE); 288 binding.btnGeneralHuyou.setVisibility(exist ? View.GONE : View.VISIBLE);
289 } 289 }
290 }); 290 });
291 } 291 }
292 292
293 @SuppressLint({"CheckResult", "NotifyDataSetChanged"}) 293 @SuppressLint({"CheckResult", "NotifyDataSetChanged"})
294 private void getStageHuyou() { 294 private void getStageHuyou() {
295 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 1) 295 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 1)
296 .compose(transformSingle()) 296 .compose(transformSingle())
297 .map(ResponseResult::getData) 297 .map(ResponseResult::getData)
298 .subscribe((list, throwable) -> { 298 .subscribe((list, throwable) -> {
299 if (throwable != null) { 299 if (throwable != null) {
300 throwable.printStackTrace(); 300 throwable.printStackTrace();
301 return; 301 return;
302 } 302 }
303 if (list != null) { 303 if (list != null) {
304 mStageList.clear(); 304 mStageList.clear();
305 mStageList.addAll(list); 305 mStageList.addAll(list);
306 stageAdapter.notifyDataSetChanged(); 306 stageAdapter.notifyDataSetChanged();
307 } 307 }
308 }); 308 });
309 } 309 }
310 310
311 @SuppressLint("CheckResult") 311 @SuppressLint("CheckResult")
312 private void generalWeek() { 312 private void generalWeek() {
313 showLoadingDialog("稍等..."); 313 showLoadingDialog("稍等...");
314 NetWorks.service_url.generalHuyou() 314 NetWorks.service_url.generalHuyou()
315 .compose(transformSingle()) 315 .compose(transformSingle())
316 .subscribe((response, throwable) -> { 316 .subscribe((response, throwable) -> {
317 cancelLoadingDialog(); 317 cancelLoadingDialog();
318 if (throwable != null) { 318 if (throwable != null) {
319 loadFail("失败"); 319 loadFail("失败");
320 throwable.printStackTrace(); 320 throwable.printStackTrace();
321 return; 321 return;
322 } 322 }
323 if (response != null && response.getSuccess()) { 323 if (response != null && response.getSuccess()) {
324 binding.btnGeneralHuyou.setVisibility(View.GONE); 324 binding.btnGeneralHuyou.setVisibility(View.GONE);
325 getWeekHuyou(); 325 getWeekHuyou();
326 } 326 }
327 }); 327 });
328 } 328 }
329 329
330 @SuppressLint("CheckResult") 330 @SuppressLint("CheckResult")
331 private void generalStage(Date startDate, Date endDate, String subject) { 331 private void generalStage(Date startDate, Date endDate, String subject) {
332 SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss", Locale.CHINA); 332 SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss", Locale.CHINA);
333 Map<String, Object> body = new HashMap<>(); 333 Map<String, Object> body = new HashMap<>();
334 body.put("stuId", state.student.stuId); 334 body.put("stuId", state.student.stuId);
335 body.put("startTime", format.format(startDate)); 335 body.put("startTime", format.format(startDate));
336 body.put("endTime", format.format(endDate)); 336 body.put("endTime", format.format(endDate));
337 body.put("subject", subject); 337 body.put("subject", subject);
338 showLoadingDialog("稍等..."); 338 showLoadingDialog("稍等...");
339 NetWorks.service_url.generalStageHuyou(NetWorks.getHeader(), body) 339 NetWorks.service_url.generalStageHuyou(NetWorks.getHeader(), body)
340 .subscribeOn(Schedulers.io()) 340 .subscribeOn(Schedulers.io())
341 .observeOn(AndroidSchedulers.mainThread()) 341 .observeOn(AndroidSchedulers.mainThread())
342 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 342 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
343 .subscribe((response, throwable) -> { 343 .subscribe((response, throwable) -> {
344 if (throwable != null) { 344 if (throwable != null) {
345 loadFail("失败"); 345 loadFail("失败");
346 throwable.printStackTrace(); 346 throwable.printStackTrace();
347 return; 347 return;
348 } 348 }
349 if (response.getSuccess()) { 349 if (response.getSuccess()) {
350 getStageHuyou(); 350 getStageHuyou();
351 cancelLoadingDialog(); 351 cancelLoadingDialog();
352 } else { 352 } else {
353 loadFail(response.getMsg()); 353 loadFail(response.getMsg());
354 } 354 }
355 }); 355 });
356 } 356 }
357 357
358 @SuppressLint("CheckResult") 358 @SuppressLint("CheckResult")
359 private void deleteHuyou(StDetail detail) { 359 private void deleteHuyou(StDetail detail) {
360 showLoadingDialog("稍等..."); 360 showLoadingDialog("稍等...");
361 NetWorks.service_url.deleteHuyou(NetWorks.getHeader(), detail.id) 361 NetWorks.service_url.deleteHuyou(NetWorks.getHeader(), detail.id)
362 .subscribeOn(Schedulers.io()) 362 .subscribeOn(Schedulers.io())
363 .observeOn(AndroidSchedulers.mainThread()) 363 .observeOn(AndroidSchedulers.mainThread())
364 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 364 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
365 .subscribe((response, throwable) -> { 365 .subscribe((response, throwable) -> {
366 cancelLoadingDialog(); 366 cancelLoadingDialog();
367 if (throwable != null) { 367 if (throwable != null) {
368 loadFail("失败"); 368 loadFail("失败");
369 throwable.printStackTrace(); 369 throwable.printStackTrace();
370 return; 370 return;
371 } 371 }
372 if (detail.type == 0) { 372 if (detail.type == 0) {
373 getWeekHuyou(); 373 getWeekHuyou();
374 } else { 374 } else {
375 getStageHuyou(); 375 getStageHuyou();
376 } 376 }
377 }); 377 });
378 } 378 }
379 379
380 private void showSubjectFilter() { 380 private void showSubjectFilter() {
381 if (subjectFilter == null) { 381 if (subjectFilter == null) {
382 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); 382 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater());
383 db.setLifecycleOwner(this); 383 db.setLifecycleOwner(this);
384 db.setState(state); 384 db.setState(state);
385 db.bg.setOnClickListener(v -> subjectFilter.dismiss()); 385 db.bg.setOnClickListener(v -> subjectFilter.dismiss());
386 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 386 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
387 subjectFilter.setOutsideTouchable(true); 387 subjectFilter.setOutsideTouchable(true);
388 subjectFilter.setOnDismissListener(this::getHomework); 388 subjectFilter.setOnDismissListener(this::getHomework);
389 } 389 }
390 subjectFilter.showAsDropDown(binding.anchorView); 390 subjectFilter.showAsDropDown(binding.anchorView);
391 } 391 }
392 392
393 private void showGradeFilter() { 393 private void showGradeFilter() {
394 if (gradeFilter == null) { 394 if (gradeFilter == null) {
395 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); 395 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater());
396 db.setLifecycleOwner(this); 396 db.setLifecycleOwner(this);
397 db.setState(state); 397 db.setState(state);
398 db.bg.setOnClickListener(v -> gradeFilter.dismiss()); 398 db.bg.setOnClickListener(v -> gradeFilter.dismiss());
399 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 399 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
400 gradeFilter.setOutsideTouchable(true); 400 gradeFilter.setOutsideTouchable(true);
401 gradeFilter.setOnDismissListener(this::getHomework); 401 gradeFilter.setOnDismissListener(this::getHomework);
402 } 402 }
403 gradeFilter.showAsDropDown(binding.anchorView); 403 gradeFilter.showAsDropDown(binding.anchorView);
404 } 404 }
405 405
406 private void showTermFilter() { 406 private void showTermFilter() {
407 if (termFilter == null) { 407 if (termFilter == null) {
408 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); 408 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater());
409 db.setLifecycleOwner(this); 409 db.setLifecycleOwner(this);
410 db.setState(state); 410 db.setState(state);
411 db.bg.setOnClickListener(v -> termFilter.dismiss()); 411 db.bg.setOnClickListener(v -> termFilter.dismiss());
412 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 412 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
413 termFilter.setOutsideTouchable(true); 413 termFilter.setOutsideTouchable(true);
414 termFilter.setOnDismissListener(this::getHomework); 414 termFilter.setOnDismissListener(this::getHomework);
415 } 415 }
416 termFilter.showAsDropDown(binding.anchorView); 416 termFilter.showAsDropDown(binding.anchorView);
417 } 417 }
418 418
419 private void showFeedbackFilter() { 419 private void showFeedbackFilter() {
420 if (feedbackFilter == null) { 420 if (feedbackFilter == null) {
421 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); 421 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater());
422 db.setLifecycleOwner(this); 422 db.setLifecycleOwner(this);
423 db.setState(state); 423 db.setState(state);
424 db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); 424 db.bg.setOnClickListener(v -> feedbackFilter.dismiss());
425 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 425 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
426 feedbackFilter.setOutsideTouchable(true); 426 feedbackFilter.setOutsideTouchable(true);
427 feedbackFilter.setOnDismissListener(this::getHomework); 427 feedbackFilter.setOnDismissListener(this::getHomework);
428 } 428 }
429 feedbackFilter.showAsDropDown(binding.anchorView); 429 feedbackFilter.showAsDropDown(binding.anchorView);
430 } 430 }
431 431
432 @Override 432 @Override
433 protected ActivityStudentHomeworkBinding getViewBinding() { 433 protected ActivityStudentHomeworkBinding getViewBinding() {
434 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); 434 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater());
435 } 435 }
436 436
437 public static class State { 437 public static class State {
438 public Student student; 438 public Student student;
439 439
440 public MutableLiveData<String> subject = new MutableLiveData<>(""); 440 public MutableLiveData<String> subject = new MutableLiveData<>("");
441 public void setSubject(String value) { 441 public void setSubject(String value) {
442 subject.setValue(value); 442 subject.setValue(value);
443 } 443 }
444 444
445 public MutableLiveData<String> grade = new MutableLiveData<>(""); 445 public MutableLiveData<String> grade = new MutableLiveData<>("");
446 public void setGrade(String value) { 446 public void setGrade(String value) {
447 grade.setValue(value); 447 grade.setValue(value);
448 } 448 }
449 449
450 public MutableLiveData<String> term = new MutableLiveData<>(""); 450 public MutableLiveData<String> term = new MutableLiveData<>("");
451 public void setTerm(String value) { 451 public void setTerm(String value) {
452 term.setValue(value); 452 term.setValue(value);
453 } 453 }
454 454
455 //0:全部, 1: 已反馈, 2:未反馈 455 //0:全部, 1: 已反馈, 2:未反馈
456 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); 456 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0);
457 public void setFeedback(int value) { 457 public void setFeedback(int value) {
458 feedback.setValue(value); 458 feedback.setValue(value);
459 } 459 }
460 } 460 }
461 461
462 static class HuyouAdapter extends BaseQuickAdapter<StDetail, BaseViewHolder> { 462 static class HuyouAdapter extends BaseQuickAdapter<StDetail, BaseViewHolder> {
463 public Function1<StDetail> deleteCall; 463 public Function1<StDetail> deleteCall;
464 public Function1<StDetail> detailCall; 464 public Function1<StDetail> detailCall;
465 public Student student; 465 public Student student;
466 466
467 public HuyouAdapter(@Nullable List<StDetail> data) { 467 public HuyouAdapter(@Nullable List<StDetail> data) {
468 super(R.layout.item_homework_list, data); 468 super(R.layout.item_homework_list, data);
469 } 469 }
470 470
471 @SuppressLint("SetTextI18n,SimpleDateFormat") 471 @SuppressLint("SetTextI18n,SimpleDateFormat")
472 @Override 472 @Override
473 protected void convert(@NonNull BaseViewHolder holder, StDetail data) { 473 protected void convert(@NonNull BaseViewHolder holder, StDetail data) {
474 holder.setGone(R.id.tvFlag, false); 474 holder.setGone(R.id.tvFlag, false);
475 int subjectImg; 475 int subjectImg;
476 switch (data.homeworkSubject) { 476 switch (data.homeworkSubject) {
477 case "语文": 477 case "语文":
478 subjectImg = R.drawable.ic_chinese; 478 subjectImg = R.drawable.ic_chinese;
479 break; 479 break;
480 case "英语": 480 case "英语":
481 subjectImg = R.drawable.ic_english; 481 subjectImg = R.drawable.ic_english;
482 break; 482 break;
483 case "物理": 483 case "物理":
484 subjectImg = R.drawable.ic_physics; 484 subjectImg = R.drawable.ic_physics;
485 break; 485 break;
486 case "化学": 486 case "化学":
487 subjectImg = R.drawable.ic_chemistry; 487 subjectImg = R.drawable.ic_chemistry;
488 break; 488 break;
489 case "数学": 489 case "数学":
490 default: 490 default:
491 subjectImg = R.drawable.ic_math; 491 subjectImg = R.drawable.ic_math;
492 } 492 }
493 holder.setImageResource(R.id.ivSubject, subjectImg); 493 holder.setImageResource(R.id.ivSubject, subjectImg);
494 Date endDate = new Date(data.endTime.getTime() - 1000); 494 Date endDate = new Date(data.endTime.getTime() - 1000);
495 String startStr = new SimpleDateFormat("yyyy.M.d").format(data.startTime); 495 String startStr = new SimpleDateFormat("yyyy.M.d").format(data.startTime);
496 String endStr = new SimpleDateFormat("-M.d").format(endDate); 496 String endStr = new SimpleDateFormat("-M.d").format(endDate);
497 String typeStr = data.type == 0 ? "作业周总结" : "作业阶段性总结"; 497 String typeStr = data.type == 0 ? "作业周总结" : "作业阶段性总结";
498 String title = startStr + endStr + data.homeworkSubject + typeStr; 498 String title = startStr + endStr + data.homeworkSubject + typeStr;
499 holder.setText(R.id.tvName, title); 499 holder.setText(R.id.tvName, title);
500 holder.setText(R.id.tvGrade, data.grade); 500 holder.setText(R.id.tvGrade, data.grade);
501 View btnDelete = holder.getView(R.id.btnDelete); 501 View btnDelete = holder.getView(R.id.btnDelete);
502 View btnDetail = holder.getView(R.id.btnDetail); 502 View btnDetail = holder.getView(R.id.btnDetail);
503 btnDelete.setOnClickListener(v -> { 503 btnDelete.setOnClickListener(v -> {
504 if (deleteCall != null) deleteCall.invoke(data); 504 if (deleteCall != null) deleteCall.invoke(data);
505 }); 505 });
506 btnDetail.setOnClickListener(v -> { 506 btnDetail.setOnClickListener(v -> {
507 if (detailCall != null) detailCall.invoke(data); 507 if (detailCall != null) detailCall.invoke(data);
508 }); 508 });
509 } 509 }
510 510
511 private SimpleDateFormat getFormatWithGmt8(String pattern) { 511 private SimpleDateFormat getFormatWithGmt8(String pattern) {
512 SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA); 512 SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA);
513 //format.setTimeZone(TimeZone.getTimeZone("GMT+16")); 513 //format.setTimeZone(TimeZone.getTimeZone("GMT+16"));
514 return format; 514 return format;
515 } 515 }
516 } 516 }
517 517
518 } 518 }
519 519
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 .flatMap(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) { 293 if (data != null) {
294 Collections.sort(data); 294 Collections.sort(data);
295 } 295 }
296 homeworkAdapter.setNewData(data); 296 homeworkAdapter.setNewData(data);
297 if (binding.tabLayout.getSelectedTabPosition() == 1) { 297 if (binding.tabLayout.getSelectedTabPosition() == 1) {
298 binding.rvMain.setVisibility(data == null || data.isEmpty() ? View.GONE : View.VISIBLE); 298 binding.rvMain.setVisibility(data == null || data.isEmpty() ? View.GONE : View.VISIBLE);
299 binding.llEmpty.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE); 299 binding.llEmpty.setVisibility(data == null || data.isEmpty() ? View.VISIBLE : View.GONE);
300 } 300 }
301 }); 301 });
302 } 302 }
303 303
304 private void getError(String subject) { 304 private void getError(String subject) {
305 if (studentBean == null) { 305 if (studentBean == null) {
306 return; 306 return;
307 } 307 }
308 Map<String, Object> map = new HashMap<>(); 308 Map<String, Object> map = new HashMap<>();
309 map.put("subject", subject); 309 map.put("subject", subject);
310 map.put("stuId", studentBean.getStuId()); 310 map.put("stuId", studentBean.getStuId());
311 map.put("pageSize", 5); 311 map.put("pageSize", 5);
312 map.put("pageNum", 1); 312 map.put("pageNum", 1);
313 NetWorks.getError(map, new Observer<ResponseResult<PageInfo<TopicBean>>>() { 313 NetWorks.getError(map, new Observer<ResponseResult<PageInfo<TopicBean>>>() {
314 @Override 314 @Override
315 public void onSubscribe(Disposable d) { 315 public void onSubscribe(Disposable d) {
316 } 316 }
317 @Override 317 @Override
318 public void onNext(ResponseResult<PageInfo<TopicBean>> result) { 318 public void onNext(ResponseResult<PageInfo<TopicBean>> result) {
319 if (result.getData() != null && result.getCode() == 200) { 319 if (result.getData() != null && result.getCode() == 200) {
320 List<TopicBean> topicBeans = result.getData().getList(); 320 List<TopicBean> topicBeans = result.getData().getList();
321 errorAdapter.refresh(topicBeans); 321 errorAdapter.refresh(topicBeans);
322 if (binding.tabLayout.getSelectedTabPosition() == 0) { 322 if (binding.tabLayout.getSelectedTabPosition() == 0) {
323 if (topicBeans.size() > 0) { 323 if (topicBeans.size() > 0) {
324 getBinding().rvMain.setVisibility(View.VISIBLE); 324 getBinding().rvMain.setVisibility(View.VISIBLE);
325 getBinding().llEmpty.setVisibility(View.GONE); 325 getBinding().llEmpty.setVisibility(View.GONE);
326 } else { 326 } else {
327 getBinding().rvMain.setVisibility(View.GONE); 327 getBinding().rvMain.setVisibility(View.GONE);
328 getBinding().llEmpty.setVisibility(View.VISIBLE); 328 getBinding().llEmpty.setVisibility(View.VISIBLE);
329 } 329 }
330 } 330 }
331 } 331 }
332 } 332 }
333 @Override 333 @Override
334 public void onError(Throwable e) { 334 public void onError(Throwable e) {
335 e.printStackTrace(); 335 e.printStackTrace();
336 } 336 }
337 @Override 337 @Override
338 public void onComplete() { 338 public void onComplete() {
339 } 339 }
340 }); 340 });
341 } 341 }
342 342
343 @Override 343 @Override
344 public void onResume() { 344 public void onResume() {
345 super.onResume(); 345 super.onResume();
346 String subStr = getResources().getStringArray(R.array.filter_subject)[subject]; 346 String subStr = getResources().getStringArray(R.array.filter_subject)[subject];
347 getError(subStr); 347 getError(subStr);
348 getHomework(subStr); 348 getHomework(subStr);
349 } 349 }
350 350
351 public class HandlerCallBack implements IHandlerCallBack<ImageInfo> { 351 public class HandlerCallBack implements IHandlerCallBack<ImageInfo> {
352 int type; 352 int type;
353 public HandlerCallBack(int type) { 353 public HandlerCallBack(int type) {
354 this.type = type; 354 this.type = type;
355 } 355 }
356 356
357 private String TAG = "---ImagePicker---"; 357 private String TAG = "---ImagePicker---";
358 List<ImageInfo> photoList = new ArrayList<>(); 358 List<ImageInfo> photoList = new ArrayList<>();
359 359
360 @Override 360 @Override
361 public void onStart() { 361 public void onStart() {
362 Log.i(TAG, "onStart: 开启"); 362 Log.i(TAG, "onStart: 开启");
363 } 363 }
364 364
365 @Override 365 @Override
366 public void onSuccess(List<ImageInfo> photoList) { 366 public void onSuccess(List<ImageInfo> photoList) {
367 this.photoList = photoList; 367 this.photoList = photoList;
368 Log.i(TAG, "onSuccess: 返回数据"); 368 Log.i(TAG, "onSuccess: 返回数据");
369 } 369 }
370 370
371 @Override 371 @Override
372 public void onCancel() { 372 public void onCancel() {
373 Log.i(TAG, "onCancel: 取消"); 373 Log.i(TAG, "onCancel: 取消");
374 } 374 }
375 375
376 @Override 376 @Override
377 public void onFinish(List<ImageInfo> selectImage) { 377 public void onFinish(List<ImageInfo> selectImage) {
378 if (selectImage.size() == photoList.size()) { 378 if (selectImage.size() == photoList.size()) {
379 ArrayList<String> strings = new ArrayList<>(); 379 ArrayList<String> strings = new ArrayList<>();
380 Intent intent = new Intent(getActivity(), ImageActivity.class); 380 Intent intent = new Intent(getActivity(), ImageActivity.class);
381 for (ImageInfo imageInfo : selectImage) { 381 for (ImageInfo imageInfo : selectImage) {
382 strings.add(imageInfo.getPath()); 382 strings.add(imageInfo.getPath());
383 } 383 }
384 intent.putStringArrayListExtra("images", strings); 384 intent.putStringArrayListExtra("images", strings);
385 intent.putExtra("type", type); 385 intent.putExtra("type", type);
386 startActivity(intent); 386 startActivity(intent);
387 } 387 }
388 } 388 }
389 389
390 @Override 390 @Override
391 public void onError() { 391 public void onError() {
392 Log.i(TAG, "onError: 出错"); 392 Log.i(TAG, "onError: 出错");
393 } 393 }
394 } 394 }
395 395
396 @Override 396 @Override
397 public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 397 public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
398 super.onActivityResult(requestCode, resultCode, data); 398 super.onActivityResult(requestCode, resultCode, data);
399 if (resultCode != RESULT_OK) return; 399 if (resultCode != RESULT_OK) return;
400 if (requestCode == 0xA01 || requestCode == 0xA02 && !TextUtils.isEmpty(filePath)) { 400 if (requestCode == 0xA01 || requestCode == 0xA02 && !TextUtils.isEmpty(filePath)) {
401 Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath)); 401 Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath));
402 String path = getContext().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg"; 402 String path = getContext().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg";
403 CommonUtil.saveBitmapToUri(b, path); 403 CommonUtil.saveBitmapToUri(b, path);
404 ArrayList<String> strings = new ArrayList<>(); 404 ArrayList<String> strings = new ArrayList<>();
405 Intent intent = new Intent(getContext(), ImageActivity.class); 405 Intent intent = new Intent(getContext(), ImageActivity.class);
406 strings.add(path); 406 strings.add(path);
407 intent.putStringArrayListExtra("images", strings); 407 intent.putStringArrayListExtra("images", strings);
408 intent.putExtra("type", requestCode == 0xA01 ? 0 : 1); 408 intent.putExtra("type", requestCode == 0xA01 ? 0 : 1);
409 startActivity(intent); 409 startActivity(intent);
410 } 410 }
411 } 411 }
412 } 412 }
413 413